Class: Sentry::BackpressureMonitor

Inherits:
ThreadedPeriodicWorker show all
Defined in:
lib/sentry/backpressure_monitor.rb

Constant Summary collapse

DEFAULT_INTERVAL =
10
MAX_DOWNSAMPLE_FACTOR =
10

Instance Method Summary collapse

Methods inherited from ThreadedPeriodicWorker

#ensure_thread, #kill

Constructor Details

#initialize(configuration, client, interval: DEFAULT_INTERVAL) ⇒ BackpressureMonitor

Returns a new instance of BackpressureMonitor.



8
9
10
11
12
13
14
# File 'lib/sentry/backpressure_monitor.rb', line 8

def initialize(configuration, client, interval: DEFAULT_INTERVAL)
  super(configuration.logger, interval)
  @client = client

  @healthy = true
  @downsample_factor = 0
end

Instance Method Details

#check_healthObject



31
32
33
# File 'lib/sentry/backpressure_monitor.rb', line 31

def check_health
  @healthy = !(@client.transport.any_rate_limited? || Sentry.background_worker&.full?)
end

#downsample_factorObject



21
22
23
24
# File 'lib/sentry/backpressure_monitor.rb', line 21

def downsample_factor
  ensure_thread
  @downsample_factor
end

#healthy?Boolean

Returns:

  • (Boolean)


16
17
18
19
# File 'lib/sentry/backpressure_monitor.rb', line 16

def healthy?
  ensure_thread
  @healthy
end

#runObject



26
27
28
29
# File 'lib/sentry/backpressure_monitor.rb', line 26

def run
  check_health
  set_downsample_factor
end

#set_downsample_factorObject



35
36
37
38
39
40
41
42
43
# File 'lib/sentry/backpressure_monitor.rb', line 35

def set_downsample_factor
  if @healthy
    log_debug("[BackpressureMonitor] health check positive, reverting to normal sampling") if @downsample_factor.positive?
    @downsample_factor = 0
  else
    @downsample_factor += 1 if @downsample_factor < MAX_DOWNSAMPLE_FACTOR
    log_debug("[BackpressureMonitor] health check negative, downsampling with a factor of #{@downsample_factor}")
  end
end