YUKI Hiroshi
null+****@clear*****
Thu Dec 11 17:47:20 JST 2014
YUKI Hiroshi 2014-12-11 17:47:20 +0900 (Thu, 11 Dec 2014) New Revision: 4996827bed3d2aaffc50815ac1df618c4032af93 https://github.com/droonga/droonga-engine/commit/4996827bed3d2aaffc50815ac1df618c4032af93 Merged 97ba0d9: Merge ../droonga-engine into replicas-in-a-branch Message: Introduce LiveNodesList class to manage rich list Copied files: lib/droonga/live_nodes_list.rb (from lib/droonga/live_nodes_list_loader.rb) Modified files: lib/droonga/command/remote.rb lib/droonga/command/serf_event_handler.rb lib/droonga/engine.rb lib/droonga/engine_state.rb lib/droonga/live_nodes_list_loader.rb lib/droonga/path.rb lib/droonga/serf.rb Modified: lib/droonga/command/remote.rb (+6 -6) =================================================================== --- lib/droonga/command/remote.rb 2014-12-11 17:24:08 +0900 (54ce5b5) +++ lib/droonga/command/remote.rb 2014-12-11 17:47:20 +0900 (b079ca3) @@ -396,11 +396,11 @@ module Droonga end end - class UpdateLiveNodes < Base + class UpdateLiveNodesList < Base def process - path = Path.live_nodes - nodes = live_nodes - file_contents = JSON.pretty_generate(nodes) + path = Path.live_nodes_list + new_list = live_nodes_list + file_contents = JSON.pretty_generate(new_list) SafeFileWriter.write(path) do |output, file| output.puts(file_contents) @service_installation.ensure_correct_file_permission(file) @@ -408,8 +408,8 @@ module Droonga end private - def live_nodes - @serf.live_nodes + def live_nodes_list + @serf.live_nodes_list end end end Modified: lib/droonga/command/serf_event_handler.rb (+1 -1) =================================================================== --- lib/droonga/command/serf_event_handler.rb 2014-12-11 17:24:08 +0900 (4635e98) +++ lib/droonga/command/serf_event_handler.rb 2014-12-11 17:47:20 +0900 (0d99a6f) @@ -61,7 +61,7 @@ module Droonga @payload = JSON.parse($stdin.gets) detect_command_class_from_custom_event(ENV["SERF_QUERY_NAME"]) when "member-join", "member-leave", "member-update", "member-reap" - Remote::UpdateLiveNodes + Remote::UpdateLiveNodesList else nil end Modified: lib/droonga/engine.rb (+7 -7) =================================================================== --- lib/droonga/engine.rb 2014-12-11 17:24:08 +0900 (4b2d1b0) +++ lib/droonga/engine.rb 2014-12-11 17:47:20 +0900 (b0e5dcf) @@ -36,9 +36,9 @@ module Droonga @catalog = load_catalog @state.catalog = @catalog @dispatcher = create_dispatcher - @live_nodes_list_observer = FileObserver.new(loop, Path.live_nodes) + @live_nodes_list_observer = FileObserver.new(loop, Path.live_nodes_list) @live_nodes_list_observer.on_change = lambda do - @state.live_nodes = load_live_nodes + @state.live_nodes_list = load_live_nodes_list end @node_status_observer = FileObserver.new(loop, Path.node_status) @node_status_observer.on_change = lambda do @@ -116,14 +116,14 @@ module Droonga catalog end - def load_live_nodes - path = Path.live_nodes + def load_live_nodes_list + path = Path.live_nodes_list loader = LiveNodesListLoader.new(path) - live_nodes = loader.load - logger.info("live-nodes loaded", + live_nodes_list = loader.load + logger.info("live-nodes-list loaded", :path => path.to_s, :mtime => path.mtime) - live_nodes + live_nodes_list end def create_dispatcher Modified: lib/droonga/engine_state.rb (+14 -8) =================================================================== --- lib/droonga/engine_state.rb 2014-12-11 17:24:08 +0900 (8346d5f) +++ lib/droonga/engine_state.rb 2014-12-11 17:47:20 +0900 (74dc881) @@ -45,7 +45,7 @@ module Droonga @on_ready = nil @on_finish = nil @catalog = nil - @live_nodes = nil + @live_nodes_list = nil @dead_nodes = [] end @@ -110,15 +110,21 @@ module Droonga end def live_nodes - @live_nodes || @catalog.all_nodes + if @live_nodes_list + @live_nodes_list.all_nodes + else + all_nodes + end end - def live_nodes=(nodes) - old_live_nodes = @live_nodes - @live_nodes = nodes - @dead_nodes = all_nodes - @live_nodes - @forwarder.resume if old_live_nodes != @live_nodes - @live_nodes + def live_nodes_list=(nodes_list) + old_live_nodes_list = @live_nodes_list + @live_nodes_list = nodes_list + @dead_nodes = all_nodes - @live_nodes_list.all + if old_live_nodes_list != @live_nodes_list.all + @forwarder.resume + end + @live_nodes_list end def remove_dead_routes(routes) Copied: lib/droonga/live_nodes_list.rb (+5 -27) 62% =================================================================== --- lib/droonga/live_nodes_list_loader.rb 2014-12-11 17:24:08 +0900 (7515070) +++ lib/droonga/live_nodes_list.rb 2014-12-11 17:47:20 +0900 (0a9e5cd) @@ -13,36 +13,14 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -require "pathname" -require "json" - module Droonga - class LiveNodesListLoader - def initialize(path) - @path = path - end - - def load - list = parse - list.keys - end - - private - def parse - return default_list unles****@path*****? - - contents =****@path***** - return default_list if contents.empty? - - begin - JSON.parse(contents) - rescue JSON::ParserError - default_list - end + class LiveNodesList + def initialize(nodes) + @nodes = nodes end - def default_list - {} + def all_nodes + @nodes.keys end end end Modified: lib/droonga/live_nodes_list_loader.rb (+3 -1) =================================================================== --- lib/droonga/live_nodes_list_loader.rb 2014-12-11 17:24:08 +0900 (7515070) +++ lib/droonga/live_nodes_list_loader.rb 2014-12-11 17:47:20 +0900 (3df662d) @@ -16,6 +16,8 @@ require "pathname" require "json" +require "droonga/live_nodes_list" + module Droonga class LiveNodesListLoader def initialize(path) @@ -24,7 +26,7 @@ module Droonga def load list = parse - list.keys + LiveNodesList.new(list) end private Modified: lib/droonga/path.rb (+1 -1) =================================================================== --- lib/droonga/path.rb 2014-12-11 17:24:08 +0900 (d2b9f0a) +++ lib/droonga/path.rb 2014-12-11 17:47:20 +0900 (52ca600) @@ -48,7 +48,7 @@ module Droonga state + "status_file" end - def live_nodes + def live_nodes_list state + "live-nodes.json" end Modified: lib/droonga/serf.rb (+4 -4) =================================================================== --- lib/droonga/serf.rb 2014-12-11 17:24:08 +0900 (69b6245) +++ lib/droonga/serf.rb 2014-12-11 17:47:20 +0900 (e014c4b) @@ -125,9 +125,9 @@ module Droonga result end - def live_nodes + def live_nodes_list ensure_serf - nodes = {} + nodes_list = {} result = run_once("members", "-format", "json") result[:result] = JSON.parse(result[:result]) members = result[:result] @@ -135,13 +135,13 @@ module Droonga members["members"].each do |member| if member["status"] == "alive" and member["tags"]["cluster_id"] == current_cluster_id - nodes[member["name"]] = { + nodes_list[member["name"]] = { "serfAddress" => member["addr"], "tags" => member["tags"], } end end - nodes + nodes_list end def set_tag(name, value) -------------- next part -------------- HTML����������������������������...Download