[Groonga-commit] droonga/droonga-engine at 4996827 [master] Introduce LiveNodesList class to manage rich list

Zurück zum Archiv-Index

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 



More information about the Groonga-commit mailing list
Zurück zum Archiv-Index