Navigation Menu

Skip to content

Commit

Permalink
Prepare to wait until all restore messages are completely processed
Browse files Browse the repository at this point in the history
  • Loading branch information
piroor committed Apr 21, 2015
1 parent 6573fca commit 241fdc9
Showing 1 changed file with 15 additions and 1 deletion.
16 changes: 15 additions & 1 deletion lib/droonga/plugins/system/absorb_data.rb
Expand Up @@ -18,6 +18,7 @@
require "droonga/catalog/dataset"
require "droonga/serf"
require "droonga/node_name"
require "droonga/database_scanner"

require "drndump/dump_client"

Expand All @@ -36,12 +37,19 @@ def initialize
end

class DataAbsorber < AsyncCommand::AsyncHandler
include DatabaseScanner

class EmptyResponse < StandardError
end

class EmptyBody < StandardError
end

def initialize(context, loop, messenger, request)
@context = context
super(loop, messenger, request)
end

def start
logger.trace("start: start")
on_start
Expand All @@ -50,8 +58,10 @@ def start

@dumper = Drndump::DumpClient.new(dumper_params)
@dumper.on_finish = lambda do
ensure_completely_restored do
on_finish
logger.trace("start: finish")
end
end
@dumper.on_progress = lambda do |message|
logger.trace("dump progress",
Expand Down Expand Up @@ -114,6 +124,10 @@ def error_message
"failed to absorb data"
end

def ensure_completely_restored(&block)
yield
end

def on_finish
begin
if @dumper_error_message
Expand Down Expand Up @@ -220,7 +234,7 @@ def handle(message)

private
def start(request)
absorber = DataAbsorber.new(loop, messenger, request)
absorber = DataAbsorber.new(@context, loop, messenger, request)
absorber.start
end
end
Expand Down

0 comments on commit 241fdc9

Please sign in to comment.