class Sentry::ThreadedPeriodicWorker

def ensure_thread

def ensure_thread
  return false if @exited
  return true if @thread&.alive?
  @thread = Thread.new do
    loop do
      sleep(@interval)
      run
    end
  end
  true
rescue ThreadError
  log_debug("[#{self.class.name}] thread creation failed")
  @exited = true
  false
end

def initialize(sdk_logger, interval)

def initialize(sdk_logger, interval)
  @thread = nil
  @exited = false
  @interval = interval
  @sdk_logger = sdk_logger
end

def kill

def kill
  log_debug("[#{self.class.name}] thread killed")
  @exited = true
  @thread&.kill
end