@@ -11,6 +11,7 @@ defmodule Sentry.TelemetryProcessor do
1111 The processor starts as a supervisor with the following children:
1212
1313 * Error Buffer - for error events (critical priority)
14+ * Check-in Buffer - for cron check-ins (high priority)
1415 * Log Buffer - for log entries (low priority)
1516 * Scheduler - weighted round-robin scheduler with integrated transport queue
1617
@@ -19,6 +20,9 @@ defmodule Sentry.TelemetryProcessor do
1920 # Add error events to the buffer
2021 TelemetryProcessor.add(processor, %Sentry.Event{...})
2122
23+ # Add check-ins to the buffer
24+ TelemetryProcessor.add(processor, %Sentry.CheckIn{...})
25+
2226 # Add log events to the buffer
2327 TelemetryProcessor.add(processor, %Sentry.LogEvent{...})
2428
@@ -31,7 +35,7 @@ defmodule Sentry.TelemetryProcessor do
3135 use Supervisor
3236
3337 alias Sentry.Telemetry . { Buffer , Category , Scheduler }
34- alias Sentry . { Event , LogEvent }
38+ alias Sentry . { CheckIn , Event , LogEvent }
3539
3640 @ default_name __MODULE__
3741
@@ -87,11 +91,15 @@ defmodule Sentry.TelemetryProcessor do
8791
8892 Returns `:ok`.
8993 """
90- @ spec add ( Event . t ( ) | LogEvent . t ( ) ) :: :ok
94+ @ spec add ( Event . t ( ) | CheckIn . t ( ) | LogEvent . t ( ) ) :: :ok
9195 def add ( % Event { } = item ) do
9296 add ( processor_name ( ) , item )
9397 end
9498
99+ def add ( % CheckIn { } = item ) do
100+ add ( processor_name ( ) , item )
101+ end
102+
95103 def add ( % LogEvent { } = item ) do
96104 add ( processor_name ( ) , item )
97105 end
@@ -103,7 +111,7 @@ defmodule Sentry.TelemetryProcessor do
103111
104112 Returns `:ok`.
105113 """
106- @ spec add ( Supervisor . supervisor ( ) , Event . t ( ) | LogEvent . t ( ) ) :: :ok
114+ @ spec add ( Supervisor . supervisor ( ) , Event . t ( ) | CheckIn . t ( ) | LogEvent . t ( ) ) :: :ok
107115 def add ( processor , % Event { } = item ) when is_atom ( processor ) do
108116 Buffer . add ( buffer_name ( processor , :error ) , item )
109117 Scheduler . signal ( scheduler_name ( processor ) )
@@ -118,6 +126,20 @@ defmodule Sentry.TelemetryProcessor do
118126 :ok
119127 end
120128
129+ def add ( processor , % CheckIn { } = item ) when is_atom ( processor ) do
130+ Buffer . add ( buffer_name ( processor , :check_in ) , item )
131+ Scheduler . signal ( scheduler_name ( processor ) )
132+ :ok
133+ end
134+
135+ def add ( processor , % CheckIn { } = item ) do
136+ buffer = get_buffer ( processor , :check_in )
137+ Buffer . add ( buffer , item )
138+ scheduler = get_scheduler ( processor )
139+ Scheduler . signal ( scheduler )
140+ :ok
141+ end
142+
121143 def add ( processor , % LogEvent { } = item ) when is_atom ( processor ) do
122144 Buffer . add ( buffer_name ( processor , :log ) , item )
123145 Scheduler . signal ( scheduler_name ( processor ) )
@@ -165,7 +187,7 @@ defmodule Sentry.TelemetryProcessor do
165187 Returns the buffer pid for a given category.
166188 """
167189 @ spec get_buffer ( Supervisor . supervisor ( ) , Category . t ( ) ) :: pid ( )
168- def get_buffer ( processor , category ) when category in [ :error , :log ] do
190+ def get_buffer ( processor , category ) when category in [ :error , :check_in , : log] do
169191 children = Supervisor . which_children ( processor )
170192 buffer_id = buffer_id ( category )
171193
@@ -195,7 +217,7 @@ defmodule Sentry.TelemetryProcessor do
195217 Returns 0 if the processor is not running.
196218 """
197219 @ spec buffer_size ( Category . t ( ) ) :: non_neg_integer ( )
198- def buffer_size ( category ) when category in [ :error , :log ] do
220+ def buffer_size ( category ) when category in [ :error , :check_in , : log] do
199221 buffer_size ( processor_name ( ) , category )
200222 end
201223
@@ -205,7 +227,7 @@ defmodule Sentry.TelemetryProcessor do
205227 Returns 0 if the processor is not running.
206228 """
207229 @ spec buffer_size ( Supervisor . supervisor ( ) , Category . t ( ) ) :: non_neg_integer ( )
208- def buffer_size ( processor , category ) when category in [ :error , :log ] do
230+ def buffer_size ( processor , category ) when category in [ :error , :check_in , : log] do
209231 case safe_get_buffer ( processor , category ) do
210232 { :ok , buffer } -> Buffer . size ( buffer )
211233 :error -> 0
@@ -267,6 +289,7 @@ defmodule Sentry.TelemetryProcessor do
267289 [
268290 buffers: % {
269291 error: Map . fetch! ( buffer_names , :error ) ,
292+ check_in: Map . fetch! ( buffer_names , :check_in ) ,
270293 log: Map . fetch! ( buffer_names , :log )
271294 } ,
272295 name: scheduler_name ( processor_name ) ,
@@ -286,6 +309,7 @@ defmodule Sentry.TelemetryProcessor do
286309 end
287310
288311 defp buffer_id ( :error ) , do: :error_buffer
312+ defp buffer_id ( :check_in ) , do: :check_in_buffer
289313 defp buffer_id ( :log ) , do: :log_buffer
290314
291315 @ doc false
0 commit comments