[Groonga-commit] droonga/droonga-engine at beedfb4 [master] Set cluster's id based on a hash of all nodes

Back to archive index

YUKI Hiroshi null+****@clear*****
Sun Nov 30 04:13:32 JST 2014


YUKI Hiroshi	2014-11-30 04:13:32 +0900 (Sun, 30 Nov 2014)

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

  Message:
    Set cluster's id based on a hash of all nodes

  Modified files:
    lib/droonga/command/droonga_engine.rb
    lib/droonga/serf.rb

  Modified: lib/droonga/command/droonga_engine.rb (+1 -0)
===================================================================
--- lib/droonga/command/droonga_engine.rb    2014-11-30 04:02:57 +0900 (70abe9b)
+++ lib/droonga/command/droonga_engine.rb    2014-11-30 04:13:32 +0900 (3a1acbb)
@@ -382,6 +382,7 @@ module Droonga
           catalog_observer = FileObserver.new(@loop, Path.catalog)
           catalog_observer.on_change = lambda do
             restart_graceful
+            @serf.update_cluster_id if @serf and****@serf*****?
           end
           catalog_observer.start
           catalog_observer

  Modified: lib/droonga/serf.rb (+17 -0)
===================================================================
--- lib/droonga/serf.rb    2014-11-30 04:02:57 +0900 (b806c3b)
+++ lib/droonga/serf.rb    2014-11-30 04:13:32 +0900 (944d446)
@@ -71,6 +71,7 @@ module Droonga
                    "-event-handler", "droonga-engine-serf-event-handler",
                    "-log-level", log_level,
                    "-tag", "role=engine",
+                   "-tag", "cluster_id=#{cluster_id}",
                    *retry_joins)
       logger.trace("start: done")
     end
@@ -141,6 +142,22 @@ module Droonga
       nodes
     end
 
+    def set_tag(tag_name, value)
+      ensure_serf
+      run_once("tags", "-set", "#{name}=#{value}")
+    end
+
+    def update_cluster_id
+      set_tag("cluster_id", cluster_id)
+    end
+
+    def cluster_id
+      loader = CatalogLoader.new(Path.catalog.to_s)
+      catalog = loader.load
+      raw_id = catalog.all_nodes.sort.join(",")
+      Digest::SHA1.hexdigest(raw_id)
+    end
+
     private
     def ensure_serf
       @serf = find_system_serf
-------------- next part --------------
HTML����������������������������...
下載 



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