Module: SolidTerminator

Defined in:
lib/solid_terminator.rb,
lib/solid_terminator/engine.rb,
lib/solid_terminator/monitor.rb,
lib/solid_terminator/version.rb,
lib/solid_terminator/terminable.rb,
lib/solid_terminator/termination.rb,
lib/solid_terminator/configuration.rb,
lib/solid_terminator/job_terminated.rb,
lib/solid_terminator/thread_registry.rb,
lib/solid_terminator/claimed_execution_patch.rb,
lib/generators/solid_terminator/install_generator.rb

Defined Under Namespace

Modules: ClaimedExecutionPatch, Generators, Terminable, ThreadRegistry Classes: Configuration, Engine, JobTerminated, Monitor, Termination

Constant Summary collapse

VERSION =
'0.1.0'

Class Method Summary collapse

Class Method Details

.configurationObject



19
20
21
# File 'lib/solid_terminator.rb', line 19

def configuration
  @configuration ||= Configuration.new
end

.configure {|configuration| ... } ⇒ Object

Yields:



23
24
25
# File 'lib/solid_terminator.rb', line 23

def configure
  yield configuration
end

.start_monitorObject



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

def start_monitor
  @monitor_mutex.synchronize do
    return if @monitor

    @monitor = Monitor.new
    @monitor.start
  end
end

.stop_monitorObject



45
46
47
48
49
50
# File 'lib/solid_terminator.rb', line 45

def stop_monitor
  @monitor_mutex.synchronize do
    @monitor&.stop
    @monitor = nil
  end
end

.terminate!(active_job_id) ⇒ Object



27
28
29
30
31
32
33
34
# File 'lib/solid_terminator.rb', line 27

def terminate!(active_job_id)
  configuration.logger.info("Termination requested for job #{active_job_id}")
  Termination.create!(active_job_id: active_job_id)
rescue ActiveRecord::RecordNotUnique, ActiveRecord::RecordInvalid => e
  raise if e.is_a?(ActiveRecord::RecordInvalid) && !e.record.errors.of_kind?(:active_job_id, :taken)

  configuration.logger.warn("Termination already requested for job #{active_job_id}")
end