YUKI Hiroshi
null+****@clear*****
Fri Apr 17 16:01:56 JST 2015
YUKI Hiroshi 2015-04-17 16:01:56 +0900 (Fri, 17 Apr 2015) New Revision: 165b469e5866711a92e6f1424fc9bf3bde52ddad https://github.com/droonga/droonga-engine/commit/165b469e5866711a92e6f1424fc9bf3bde52ddad Message: Don't register session if there is no need to collect results Modified files: lib/droonga/collector_runner.rb lib/droonga/dispatcher.rb lib/droonga/session.rb Modified: lib/droonga/collector_runner.rb (+4 -0) =================================================================== --- lib/droonga/collector_runner.rb 2015-04-17 15:45:29 +0900 (21a9e25) +++ lib/droonga/collector_runner.rb 2015-04-17 16:01:56 +0900 (f99b6fc) @@ -44,6 +44,10 @@ module Droonga 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| Modified: lib/droonga/dispatcher.rb (+10 -2) =================================================================== --- lib/droonga/dispatcher.rb 2015-04-17 15:45:29 +0900 (7dac181) +++ lib/droonga/dispatcher.rb 2015-04-17 16:01:56 +0900 (1724cb0) @@ -172,17 +172,25 @@ module Droonga 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 Modified: lib/droonga/session.rb (+6 -0) =================================================================== --- lib/droonga/session.rb 2015-04-17 15:45:29 +0900 (ca3d0b0) +++ lib/droonga/session.rb 2015-04-17 16:01:56 +0900 (dad05ef) @@ -35,6 +35,12 @@ module Droonga @n_dones ==****@tasks***** 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? -------------- next part -------------- HTML����������������������������... Download