Class: Textus::Handlers::Maintenance::DrainStore

Inherits:
Object
  • Object
show all
Defined in:
lib/textus/handlers/maintenance/drain_store.rb

Instance Method Summary collapse

Constructor Details

#initialize(container:, job_store:) ⇒ DrainStore

Returns a new instance of DrainStore.



5
6
7
8
# File 'lib/textus/handlers/maintenance/drain_store.rb', line 5

def initialize(container:, job_store:)
  @container = container
  @job_store = job_store
end

Instance Method Details

#call(_command, call) ⇒ Object



10
11
12
13
14
15
16
17
# File 'lib/textus/handlers/maintenance/drain_store.rb', line 10

def call(_command, call)
  queue = Textus::Store::Jobs::Queue.new(store: @job_store)
  Textus::Store::Jobs::Planner.seed(container: @container, queue: queue, role: call.role)
  queue.reclaim(now: Textus::Port::Clock.new.now)
  summary = Textus::Store::Jobs::Worker.for(container: @container, queue: queue).drain
  Value::Result.success("protocol" => Textus::PROTOCOL, "ok" => summary.failed.zero?,
                        "completed" => summary.completed, "failed" => summary.failed)
end