Class: ActiveJob::Temporal::WorkerClientReloader

Inherits:
Object
  • Object
show all
Defined in:
lib/activejob/temporal/worker_client_reloader.rb

Overview

Rebuilds the Temporal client and swaps it into a running worker.

Instance Method Summary collapse

Constructor Details

#initialize(worker:, logger: ActiveJob::Temporal::Logger, reload_client: ActiveJob::Temporal.method(:reload_client!)) ⇒ WorkerClientReloader

Returns a new instance of WorkerClientReloader.



7
8
9
10
11
12
# File 'lib/activejob/temporal/worker_client_reloader.rb', line 7

def initialize(worker:, logger: ActiveJob::Temporal::Logger, reload_client: ActiveJob::Temporal.method(:reload_client!))
  @worker = worker
  @logger = logger
  @reload_client = reload_client
  @mutex = Mutex.new
end

Instance Method Details

#reload(source:) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/activejob/temporal/worker_client_reloader.rb', line 14

def reload(source:)
  @mutex.synchronize do
    @logger.log_event("certificate_reload_started", source: source)
    new_client = @reload_client.call do |fresh_client|
      @worker.client = fresh_client
    end
    @logger.log_event("certificate_reload_succeeded", source: source)
    new_client
  rescue StandardError => e
    @logger.error(
      "certificate_reload_failed",
      source: source,
      error_class: e.class.name,
      message: e.message
    )
    raise
  end
end