Skip to content

Commit 72e599a

Browse files
committed
Add :telemetry events for spec status update
1 parent 7fcc552 commit 72e599a

File tree

2 files changed

+56
-8
lines changed

2 files changed

+56
-8
lines changed

lib/membrane/core/callback_handler.ex

+1-2
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,7 @@ defmodule Membrane.Core.CallbackHandler do
138138
try do
139139
telemetry_metadata = %{
140140
callback_args: args,
141-
parent_pid: state[:parent_pid],
142-
type: state.module.membrane_component_type()
141+
component_state: state
143142
}
144143

145144
:telemetry.execute([:membrane, callback, :start], %{}, telemetry_metadata)

lib/membrane/core/parent/child_life_controller.ex

+55-6
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,14 @@ defmodule Membrane.Core.Parent.ChildLifeController do
333333
end)
334334
end
335335

336-
do_proceed_spec_startup(spec_ref, %{spec_data | status: :initializing}, state)
336+
spec_data = %{spec_data | status: :initializing}
337+
338+
:telemetry.execute([:membrane, :spec, :initializing], %{}, %{
339+
spec_data: spec_data,
340+
component_state: state
341+
})
342+
343+
do_proceed_spec_startup(spec_ref, spec_data, state)
337344
end
338345

339346
defp do_proceed_spec_startup(spec_ref, %{status: :initializing} = spec_data, state) do
@@ -346,7 +353,14 @@ defmodule Membrane.Core.Parent.ChildLifeController do
346353
Membrane.Logger.debug("Spec #{inspect(spec_ref)} status changed to initialized")
347354

348355
state = handle_children_setup_completed(spec_data.children_names, state)
349-
do_proceed_spec_startup(spec_ref, %{spec_data | status: :initialized}, state)
356+
spec_data = %{spec_data | status: :initialized}
357+
358+
:telemetry.execute([:membrane, :spec, :initialized], %{}, %{
359+
spec_data: spec_data,
360+
component_state: state
361+
})
362+
363+
do_proceed_spec_startup(spec_ref, spec_data, state)
350364
else
351365
{spec_data, state}
352366
end
@@ -374,6 +388,12 @@ defmodule Membrane.Core.Parent.ChildLifeController do
374388
}
375389

376390
Membrane.Logger.debug("Spec #{inspect(spec_ref)} status changed to linking internally")
391+
392+
:telemetry.execute([:membrane, :spec, :linking_internally], %{}, %{
393+
spec_data: spec_data,
394+
component_state: state
395+
})
396+
377397
do_proceed_spec_startup(spec_ref, spec_data, state)
378398
end
379399

@@ -385,7 +405,15 @@ defmodule Membrane.Core.Parent.ChildLifeController do
385405
|> Enum.reduce(state, &LinkUtils.link/2)
386406

387407
Membrane.Logger.debug("Spec #{inspect(spec_ref)} status changed to linked internally")
388-
do_proceed_spec_startup(spec_ref, %{spec_data | status: :linked_internally}, state)
408+
409+
spec_data = %{spec_data | status: :linked_internally}
410+
411+
:telemetry.execute([:membrane, :spec, :linked_internally], %{}, %{
412+
spec_data: spec_data,
413+
component_state: state
414+
})
415+
416+
do_proceed_spec_startup(spec_ref, spec_data, state)
389417
else
390418
{spec_data, state}
391419
end
@@ -398,7 +426,14 @@ defmodule Membrane.Core.Parent.ChildLifeController do
398426
) do
399427
Membrane.Logger.debug("Spec #{inspect(spec_ref)} status changed to ready")
400428
state = remove_spec_from_dependencies(spec_ref, state)
401-
do_proceed_spec_startup(spec_ref, %{spec_data | status: :ready}, state)
429+
spec_data = %{spec_data | status: :ready}
430+
431+
:telemetry.execute([:membrane, :spec, :ready], %{}, %{
432+
spec_data: spec_data,
433+
component_state: state
434+
})
435+
436+
do_proceed_spec_startup(spec_ref, spec_data, state)
402437
end
403438

404439
defp do_proceed_spec_startup(
@@ -409,7 +444,14 @@ defmodule Membrane.Core.Parent.ChildLifeController do
409444
state = Bin.PadController.respond_links(spec_ref, state)
410445
state = remove_spec_from_dependencies(spec_ref, state)
411446
Membrane.Logger.debug("Spec #{inspect(spec_ref)} status changed to linking externally")
412-
do_proceed_spec_startup(spec_ref, %{spec_data | status: :linking_externally}, state)
447+
spec_data = %{spec_data | status: :linking_externally}
448+
449+
:telemetry.execute([:membrane, :spec, :linking_externally], %{}, %{
450+
spec_data: spec_data,
451+
component_state: state
452+
})
453+
454+
do_proceed_spec_startup(spec_ref, spec_data, state)
413455
end
414456

415457
defp do_proceed_spec_startup(
@@ -419,7 +461,14 @@ defmodule Membrane.Core.Parent.ChildLifeController do
419461
) do
420462
if Bin.PadController.all_pads_linked?(spec_ref, state) do
421463
Membrane.Logger.debug("Spec #{inspect(spec_ref)} status changed to ready")
422-
do_proceed_spec_startup(spec_ref, %{spec_data | status: :ready}, state)
464+
spec_data = %{spec_data | status: :ready}
465+
466+
:telemetry.execute([:membrane, :spec, :ready], %{}, %{
467+
spec_data: spec_data,
468+
component_state: state
469+
})
470+
471+
do_proceed_spec_startup(spec_ref, spec_data, state)
423472
else
424473
{spec_data, state}
425474
end

0 commit comments

Comments
 (0)