[Groonga-commit] droonga/droonga-engine at 6957644 [master] Add ability to specify the lifetime of internal connections from outside, via the command line option

Back to archive index

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 



More information about the Groonga-commit mailing list
Back to archive index