[Groonga-commit] droonga/droonga-engine at 8cd65f3 [master] Add "live_nodes" information to Droonga::Catalog::Base

Back to archive index

YUKI Hiroshi null+****@clear*****
Thu May 8 18:13:29 JST 2014


YUKI Hiroshi	2014-05-08 18:13:29 +0900 (Thu, 08 May 2014)

  New Revision: 8cd65f35a426b5b04c9ab5c4cd5eb9eb04d87678
  https://github.com/droonga/droonga-engine/commit/8cd65f35a426b5b04c9ab5c4cd5eb9eb04d87678

  Message:
    Add "live_nodes" information to Droonga::Catalog::Base

  Modified files:
    lib/droonga/catalog/base.rb
    lib/droonga/catalog/version1.rb
    lib/droonga/catalog_loader.rb
    lib/droonga/catalog_observer.rb
    lib/droonga/engine.rb
    lib/droonga/engine/command/droonga_engine.rb

  Modified: lib/droonga/catalog/base.rb (+30 -1)
===================================================================
--- lib/droonga/catalog/base.rb    2014-05-08 17:32:14 +0900 (5cb51ca)
+++ lib/droonga/catalog/base.rb    2014-05-08 18:13:29 +0900 (ccbd529)
@@ -18,14 +18,17 @@ require "zlib"
 require "time"
 require "droonga/error_messages"
 require "droonga/catalog/errors"
+require "pathname"
+require "json"
 
 module Droonga
   module Catalog
     class Base
       attr_reader :path, :base_path
-      def initialize(data, path)
+      def initialize(data, path, options={})
         @data = data
         @path = path
+        @options = options
         @base_path = File.dirname(path)
       end
 
@@ -36,6 +39,32 @@ module Droonga
       def dataset(name)
         datasets[name]
       end
+
+      def live_nodes
+        @live_nodes ||= load_live_nodes
+      end
+
+      private
+      def load_live_nodes
+        file = @options[:live_nodes_file]
+        return default_live_nodes unless file
+
+        file = Pathname(file)
+        return default_live_nodes unless file.exist?
+
+        contents = file.read
+        return default_live_nodes if contents.empty?
+
+        begin
+          JSON.parse(contents).keys
+        rescue JSON::ParserError
+          default_live_nodes
+        end
+      end
+
+      def default_live_nodes
+        {}
+      end
     end
   end
 end

  Modified: lib/droonga/catalog/version1.rb (+1 -1)
===================================================================
--- lib/droonga/catalog/version1.rb    2014-05-08 17:32:14 +0900 (3f51a4f)
+++ lib/droonga/catalog/version1.rb    2014-05-08 18:13:29 +0900 (fca5e36)
@@ -19,7 +19,7 @@ require "droonga/catalog/dataset"
 module Droonga
   module Catalog
     class Version1 < Base
-      def initialize(data, path)
+      def initialize(data, path, options={})
         super
         @errors = []
 

  Modified: lib/droonga/catalog_loader.rb (+6 -2)
===================================================================
--- lib/droonga/catalog_loader.rb    2014-05-08 17:32:14 +0900 (f8c9416)
+++ lib/droonga/catalog_loader.rb    2014-05-08 18:13:29 +0900 (45d82d2)
@@ -20,8 +20,9 @@ require "droonga/catalog/version2"
 
 module Droonga
   class CatalogLoader
-    def initialize(path)
+    def initialize(path, options={})
       @path = path
+      @options = options
     end
 
     def load
@@ -45,7 +46,10 @@ module Droonga
       when 1
         Catalog::Version1.new(data, @path)
       when 2
-        Catalog::Version2.new(data, @path)
+        catalog_options = {
+          :live_nodes_file => @options[:live_nodes_file],
+        }
+        Catalog::Version2.new(data, @path, catalog_options)
       when nil
         raise Error.new("Catalog version must be specified in #{@path}")
       else

  Modified: lib/droonga/catalog_observer.rb (+6 -2)
===================================================================
--- lib/droonga/catalog_observer.rb    2014-05-08 17:32:14 +0900 (a768f02)
+++ lib/droonga/catalog_observer.rb    2014-05-08 18:13:29 +0900 (29611dc)
@@ -28,9 +28,10 @@ module Droonga
     attr_reader :catalog
     attr_accessor :on_reload
 
-    def initialize(loop)
+    def initialize(loop, options={})
       @loop = loop
       @catalog_path = catalog_path
+      @options = options
       load_catalog!
     end
 
@@ -68,7 +69,10 @@ module Droonga
     end
 
     def load_catalog!
-      loader = CatalogLoader.new(@catalog_path)
+      loader_options = {
+        :live_nodes_file => @options[:live_nodes_file],
+      }
+      loader = CatalogLoader.new(@catalog_path, loader_options)
       @catalog = loader.load
       logger.info("loaded", :path => @catalog_path, :mtime => @catalog_mtime)
     ensure

  Modified: lib/droonga/engine.rb (+6 -2)
===================================================================
--- lib/droonga/engine.rb    2014-05-08 17:32:14 +0900 (06a6167)
+++ lib/droonga/engine.rb    2014-05-08 18:13:29 +0900 (d491a66)
@@ -26,8 +26,12 @@ module Droonga
     include Loggable
 
     def initialize(loop, name)
-      @state = EngineState.new(loop, name)
-      @catalog_observer = Droonga::CatalogObserver.new(@state.loop)
+      @state = EngineState.new(loop, name, options={})
+      observer_options = {
+        :live_nodes_list => options[:live_nodes_list],
+      }
+      observer = Droonga::CatalogObserver.new(@state.loop, observer_options)
+      @catalog_observer = observer
       @catalog_observer.on_reload = lambda do |catalog|
         graceful_restart(catalog)
         logger.info("restarted")

  Modified: lib/droonga/engine/command/droonga_engine.rb (+4 -1)
===================================================================
--- lib/droonga/engine/command/droonga_engine.rb    2014-05-08 17:32:14 +0900 (be558f7)
+++ lib/droonga/engine/command/droonga_engine.rb    2014-05-08 18:13:29 +0900 (204d51f)
@@ -357,7 +357,10 @@ module Droonga
           end
 
           def run_engine
-            @engine = Engine.new(@loop, @configuration.engine_name)
+            engine_options = {
+              :live_nodes_file => @configuration.live_nodes_file,
+            }
+            @engine = Engine.new(@loop, @configuration.engine_name, engine_options)
             @engine.start
           end
 
-------------- next part --------------
HTML����������������������������...
Download 



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