YUKI Hiroshi
null+****@clear*****
Wed Apr 22 19:41:54 JST 2015
YUKI Hiroshi 2015-04-22 19:41:54 +0900 (Wed, 22 Apr 2015) New Revision: 695764450c70257f6e00195d4c32fa35483d78d0 https://github.com/droonga/droonga-engine/commit/695764450c70257f6e00195d4c32fa35483d78d0 Message: Add ability to specify the lifetime of internal connections from outside, via the command line option Modified files: lib/droonga/command/droonga_engine.rb lib/droonga/command/droonga_engine_service.rb lib/droonga/command/droonga_engine_worker.rb lib/droonga/dispatcher.rb lib/droonga/engine.rb lib/droonga/engine_state.rb lib/droonga/slice.rb lib/droonga/supervisor.rb Modified: lib/droonga/command/droonga_engine.rb (+22 -0) =================================================================== --- lib/droonga/command/droonga_engine.rb 2015-04-22 19:15:57 +0900 (c97cda7) +++ lib/droonga/command/droonga_engine.rb 2015-04-22 19:41:54 +0900 (3ba729e) @@ -27,6 +27,7 @@ require "droonga/loggable" require "droonga/deferrable" require "droonga/path" require "droonga/node_name" +require "droonga/forwarder" require "droonga/serf" require "droonga/cluster" require "droonga/file_observer" @@ -97,6 +98,8 @@ module Droonga @port = nil @tag = nil + @internal_connection_lifetime = nil + @log_level = nil @log_file = nil @daemon = nil @@ -129,6 +132,12 @@ module Droonga @tag || config["tag"] || default_tag end + def internal_connection_lifetime + @internal_connection_lifetime || + config["internal_connection_lifetime"] || + default_internal_connection_lifetime + end + def log_level @log_level || config["log_level"] || default_log_level end @@ -153,6 +162,8 @@ module Droonga "--host", host, "--port", port.to_s, "--tag", tag, + "--internal-connection-lifetime", + internal_connection_lifetime, "--log-level", log_level, ] if log_file_path @@ -172,6 +183,8 @@ module Droonga def to_service_command_line command_line_options = [ "--engine-name", engine_name, + "--internal-connection-lifetime", + internal_connection_lifetime, ] command_line_options end @@ -210,6 +223,10 @@ module Droonga NodeName::DEFAULT_TAG end + def default_internal_connection_lifetime + Forwarder::DEFAULT_AUTO_CLOSE_TIMEOUT_SECONDS + end + def default_log_level ENV["DROONGA_LOG_LEVEL"] || Logger::Level.default end @@ -271,6 +288,11 @@ module Droonga "(#{default_tag})") do |tag| @tag = tag end + parser.on("--internal-connection-lifetime=SECONDS", Float, + "The time to expire internal connections, in seconds", + "(#{default_internal_connection_lifetime})") do |seconds| + @internal_connection_lifetime = seconds + end end def add_log_options(parser) Modified: lib/droonga/command/droonga_engine_service.rb (+7 -1) =================================================================== --- lib/droonga/command/droonga_engine_service.rb 2015-04-22 19:15:57 +0900 (6e654a7) +++ lib/droonga/command/droonga_engine_service.rb 2015-04-22 19:41:54 +0900 (6ca64af) @@ -37,6 +37,7 @@ module Droonga def initialize @engine_name = nil + @internal_connection_lifetime = nil @listen_fd = nil @heartbeat_fd = nil @contrtol_read_fd = nil @@ -85,6 +86,10 @@ module Droonga "Use NAME as the name of the engine") do |name| @engine_name = name end + parser.on("--internal-connection-lifetime=SECONDS", Float, + "The time to expire internal connections, in seconds") do |seconds| + @internal_connection_lifetime = seconds + end parser.on("--listen-fd=FD", Integer, "Use FD as the listen file descriptor") do |fd| @listen_fd = fd @@ -141,7 +146,8 @@ module Droonga end def run_engine - @engine = Engine.new(@loop, @engine_name, @internal_engine_name) + @engine = Engine.new(@loop, @engine_name, @internal_engine_name, + :internal_connection_lifetime => @internal_connection_lifetime) @engine.on_ready = lambda do @worker_process_agent.ready end Modified: lib/droonga/command/droonga_engine_worker.rb (+8 -1) =================================================================== --- lib/droonga/command/droonga_engine_worker.rb 2015-04-22 19:15:57 +0900 (f80c32e) +++ lib/droonga/command/droonga_engine_worker.rb 2015-04-22 19:41:54 +0900 (91589de) @@ -43,6 +43,7 @@ module Droonga @dataset = nil @database_path = nil @plugins = [] + @internal_connection_lifetime = nil @worker_process_agent = nil end @@ -102,6 +103,10 @@ module Droonga "Use PLUGINs") do |plugins| @plugins = plugins end + parser.on("--internal-connection-lifetime=SECONDS", Float, + "The time to expire internal connections, in seconds") do |seconds| + @internal_connection_lifetime = seconds + end end def write_pid_file @@ -160,7 +165,9 @@ module Droonga end def start_forwarder - @forwarder = Forwarder.new(@loop) + @forwarder = Forwarder.new(@loop, + :auto_close_timeout => + @internal_connection_lifetime) @forwarder.start end Modified: lib/droonga/dispatcher.rb (+3 -1) =================================================================== --- lib/droonga/dispatcher.rb 2015-04-22 19:15:57 +0900 (2336d72) +++ lib/droonga/dispatcher.rb 2015-04-22 19:41:54 +0900 (0f4892a) @@ -60,7 +60,9 @@ module Droonga :engine_state => @engine_state, :cluster => @cluster, :dispatcher => self, - :forwarder => @forwarder) + :forwarder => @forwarder, + :internal_connection_lifetime => + @engine_state.internal_connection_lifetime) @engine_state.wait_until_ready(@farm) @collector_runners = create_collector_runners @step_runners = create_step_runners Modified: lib/droonga/engine.rb (+4 -2) =================================================================== --- lib/droonga/engine.rb 2015-04-22 19:15:57 +0900 (bb781a2) +++ lib/droonga/engine.rb 2015-04-22 19:41:54 +0900 (7440ed3) @@ -34,14 +34,16 @@ module Droonga attr_reader :cluster - def initialize(loop, name, internal_name) + def initialize(loop, name, internal_name, options={}) @name = name @internal_name = internal_name @loop = loop @catalog = load_catalog @state = EngineState.new(loop, name, internal_name, - :catalog => @catalog) + :catalog => @catalog, + :internal_connection_lifetime => + options[:internal_connection_lifetime]) @cluster = Cluster.new(loop, :catalog => @catalog) Modified: lib/droonga/engine_state.rb (+5 -1) =================================================================== --- lib/droonga/engine_state.rb 2015-04-22 19:15:57 +0900 (801bde0) +++ lib/droonga/engine_state.rb 2015-04-22 19:41:54 +0900 (5d46528) @@ -31,6 +31,7 @@ module Droonga attr_reader :loop attr_reader :name attr_reader :internal_name + attr_reader :internal_connection_lifetime attr_reader :forwarder attr_reader :replier attr_accessor :catalog @@ -40,9 +41,12 @@ module Droonga @loop = loop @name = name @internal_name = internal_name + @internal_connection_lifetime = params[:internal_connection_lifetime] @sessions = {} @current_id = 0 - @forwarder = Forwarder.new(@loop) + @forwarder = Forwarder.new(@loop, + :auto_close_timeout => + @internal_connection_lifetime) @replier = Replier.new(@forwarder) @on_finish = nil @catalog = params[:catalog] Modified: lib/droonga/slice.rb (+1 -0) =================================================================== --- lib/droonga/slice.rb 2015-04-22 19:15:57 +0900 (6d88e65) +++ lib/droonga/slice.rb 2015-04-22 19:41:54 +0900 (dd1b9be) @@ -116,6 +116,7 @@ module Droonga config.database_path = @database_path config.plugins = @options[:plugins] config.job_pusher = @job_pusher + config.internal_connection_lifetime = @options[:internal_connection_lifetime] @supervisor = Supervisor.new(@loop, @n_workers, config) @supervisor.on_ready = lambda do on_ready Modified: lib/droonga/supervisor.rb (+2 -0) =================================================================== --- lib/droonga/supervisor.rb 2015-04-22 19:15:57 +0900 (4bb9b0f) +++ lib/droonga/supervisor.rb 2015-04-22 19:41:54 +0900 (0a98295) @@ -111,6 +111,8 @@ module Droonga "--dataset", @config.dataset.name, "--database-path", @config.database_path.to_s, "--plugins", @config.plugins.join(","), + "--internal-connection-lifetime", + @config.internal_connection_lifetime, ] options = { control_write_in => control_write_in, -------------- next part -------------- HTML����������������������������... Descargar