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