@@ -6,6 +6,7 @@ defmodule NervesHubWeb.DeviceChannel do
66 """
77
88 use Phoenix.Channel
9+ use OpenTelemetryDecorator
910
1011 require Logger
1112
@@ -19,6 +20,7 @@ defmodule NervesHubWeb.DeviceChannel do
1920 alias NervesHub.Repo
2021 alias Phoenix.Socket.Broadcast
2122
23+ @ decorate with_span ( "Channels.DeviceChannel.join" )
2224 def join ( "device" , params , % { assigns: % { device: device } } = socket ) do
2325 with { :ok , device } <- update_metadata ( device , params ) do
2426 send ( self ( ) , { :after_join , params } )
@@ -31,6 +33,7 @@ defmodule NervesHubWeb.DeviceChannel do
3133 end
3234 end
3335
36+ @ decorate with_span ( "Channels.DeviceChannel.handle_info:after_join" )
3437 def handle_info ( { :after_join , params } , % { assigns: % { device: device } } = socket ) do
3538 device = maybe_update_deployment ( device )
3639
@@ -77,6 +80,7 @@ defmodule NervesHubWeb.DeviceChannel do
7780 { :stop , :shutdown , socket }
7881 end
7982
83+ @ decorate with_span ( "Channels.DeviceChannel.handle_info:device_registration" )
8084 def handle_info ( { :device_registation , attempt } , socket ) do
8185 % { assigns: % { device: device } } = socket
8286
@@ -98,6 +102,7 @@ defmodule NervesHubWeb.DeviceChannel do
98102
99103 # We can save a fairly expensive query by checking the incoming deployment's payload
100104 # If it matches, we can set the deployment directly and only do 3 queries (update, two preloads)
105+ @ decorate with_span ( "Channels.DeviceChannel.handle_info:deployments/changed,deployment:none" )
101106 def handle_info (
102107 % Broadcast { event: "deployments/changed" , topic: "deployment:none" , payload: payload } ,
103108 % { assigns: % { device: device } } = socket
@@ -121,6 +126,7 @@ defmodule NervesHubWeb.DeviceChannel do
121126 { :noreply , assign_deployment ( socket , payload ) }
122127 end
123128
129+ @ decorate with_span ( "Channels.DeviceChannel.handle_info:deployments/changed" )
124130 def handle_info (
125131 % Broadcast { event: "deployments/changed" , payload: payload } ,
126132 % { assigns: % { device: device } } = socket
@@ -138,6 +144,7 @@ defmodule NervesHubWeb.DeviceChannel do
138144 end
139145 end
140146
147+ @ decorate with_span ( "Channels.DeviceChannel.handle_info:resolve_changed_deployment" )
141148 def handle_info ( :resolve_changed_deployment , % { assigns: % { device: device } } = socket ) do
142149 :telemetry . execute ( [ :nerves_hub , :devices , :deployment , :changed ] , % { count: 1 } )
143150
@@ -171,6 +178,7 @@ defmodule NervesHubWeb.DeviceChannel do
171178 { :noreply , socket }
172179 end
173180
181+ @ decorate with_span ( "Channels.DeviceChannel.handle_info:deployments/update" )
174182 def handle_info ( { "deployments/update" , inflight_update } , % { assigns: % { device: device } } = socket ) do
175183 device = deployment_preload ( device )
176184
@@ -215,6 +223,7 @@ defmodule NervesHubWeb.DeviceChannel do
215223 end
216224
217225 # Update local state and tell the various servers of the new information
226+ @ decorate with_span ( "Channels.DeviceChannel.handle_info:devices-updated" )
218227 def handle_info ( % Broadcast { event: "devices/updated" } , % { assigns: % { device: device } } = socket ) do
219228 device = Repo . reload ( device )
220229
@@ -355,6 +364,7 @@ defmodule NervesHubWeb.DeviceChannel do
355364 end
356365 end
357366
367+ @ decorate with_span ( "Channels.DeviceChannel.handle_in:location:update" )
358368 def handle_in ( "location:update" , location , % { assigns: % { device: device } } = socket ) do
359369 metadata = Map . put ( device . connection_metadata , "location" , location )
360370
@@ -405,6 +415,7 @@ defmodule NervesHubWeb.DeviceChannel do
405415 { :noreply , socket }
406416 end
407417
418+ @ decorate with_span ( "Channels.DeviceChannel.handle_in:health_check_report" )
408419 def handle_in ( "health_check_report" , % { "value" => device_status } , socket ) do
409420 device_meta =
410421 for { key , val } <- Map . from_struct ( socket . assigns . device . firmware_metadata ) ,
@@ -474,6 +485,7 @@ defmodule NervesHubWeb.DeviceChannel do
474485 :ok
475486 end
476487
488+ @ decorate with_span ( "Channels.DeviceChannel.maybe_update_deployment" )
477489 defp maybe_update_deployment ( device ) do
478490 device
479491 |> Deployments . preload_with_firmware_and_archive ( )
0 commit comments