Navigation Menu

Skip to content

Commit

Permalink
Don't register session if there is no need to collect results
Browse files Browse the repository at this point in the history
  • Loading branch information
piroor committed Apr 17, 2015
1 parent ada4b94 commit 165b469
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 2 deletions.
4 changes: 4 additions & 0 deletions lib/droonga/collector_runner.rb
Expand Up @@ -44,6 +44,10 @@ def collect(message)
logger.trace("collector: done")
end

def collectable?(message)
not find_collector_class(message).nil?
end

private
def find_collector_class(message)
@collector_classes.find do |collector_class|
Expand Down
12 changes: 10 additions & 2 deletions lib/droonga/dispatcher.rb
Expand Up @@ -172,17 +172,25 @@ def process_internal_message(message)
dataset = message["dataset"] || @message["dataset"]
collector_runner = @collector_runners[dataset]
session = session_planner.create_session(id, self, collector_runner)
if session.need_result?
timeout_seconds = message["timeout_seconds"] || nil
@engine_state.register_session(id, session,
:timeout_seconds => timeout_seconds)
session.start
logger.trace("process_internal_message: waiting for results")
else
session.start
session.finish
session = nil
logger.trace("process_internal_message: no need to wait for results")
end
else
logger.error("no steps error", :id => id, :message => message)
return
#todo: take cases receiving result before its query into account
end
session.start
end
@engine_state.unregister_session(id) if session.done?
@engine_state.unregister_session(id) if session and session.done?
logger.trace("process_internal_message: done")
end

Expand Down
6 changes: 6 additions & 0 deletions lib/droonga/session.rb
Expand Up @@ -35,6 +35,12 @@ def done?
@n_dones == @tasks.size
end

def need_result?
@tasks.any? do |task|
@collector_runner.collectable?("task" => task)
end
end

def start
tasks = @inputs[nil] || []
logger.trace("start: no task!") if tasks.empty?
Expand Down

0 comments on commit 165b469

Please sign in to comment.