[Groonga-commit] droonga/droonga-engine at ec5c010 [master] Set file permission for updated catalog.json automatically

Back to archive index

YUKI Hiroshi null+****@clear*****
Thu Sep 25 19:50:51 JST 2014


YUKI Hiroshi	2014-09-25 19:50:51 +0900 (Thu, 25 Sep 2014)

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

  Message:
    Set file permission for updated catalog.json automatically

  Modified files:
    lib/droonga/catalog_modifier.rb
    lib/droonga/command/remote.rb

  Modified: lib/droonga/catalog_modifier.rb (+6 -4)
===================================================================
--- lib/droonga/catalog_modifier.rb    2014-09-25 19:32:45 +0900 (b4b849d)
+++ lib/droonga/catalog_modifier.rb    2014-09-25 19:50:51 +0900 (e747c9b)
@@ -23,8 +23,8 @@ module Droonga
   class CatalogModifier
     class << self
       def modify
-        new.modify do |generator|
-          yield(generator)
+        new.modify do |generator, file|
+          yield(generator, file)
         end
       end
     end
@@ -36,8 +36,10 @@ module Droonga
     end
 
     def modify
-      yield(@generator)
-      SafeFileWriter.write(Path.catalog, JSON.pretty_generate(@generator.generate))
+      SafeFileWriter.write(Path.catalog) do |output, file|
+        yield(@generator, file)
+        output.puts(JSON.pretty_generate(@generator.generate))
+      end
     end
   end
 end

  Modified: lib/droonga/command/remote.rb (+22 -7)
===================================================================
--- lib/droonga/command/remote.rb    2014-09-25 19:32:45 +0900 (c0be8fc)
+++ lib/droonga/command/remote.rb    2014-09-25 19:50:51 +0900 (ad4449c)
@@ -23,6 +23,7 @@ require "droonga/catalog_modifier"
 require "droonga/catalog_fetcher"
 require "droonga/data_absorber"
 require "droonga/safe_file_writer"
+require "droonga/service_installation"
 
 module Droonga
   module Command
@@ -38,6 +39,9 @@ module Droonga
           }
           @serf = Serf.new(nil, @serf_name)
 
+          @service_installation = ServiceInstallation.new
+          @service_installation.ensure_using_service_base_directory
+
           log("params = #{params}")
         end
 
@@ -166,15 +170,19 @@ module Droonga
           return if other_hosts.empty?
 
           # restart self with the fetched catalog.
-          SafeFileWriter.write(Path.catalog, JSON.pretty_generate(@catalog))
+          SafeFileWriter.write(Path.catalog) do |output, file|
+            output.puts(JSON.pretty_generate(@catalog))
+            @service_installation.ensure_correct_file_permission(file)
+          end
 
           absorb_data if should_absorb_data?
 
           log("joining to the cluster: update myself")
 
-          CatalogModifier.modify do |modifier|
+          CatalogModifier.modify do |modifier, file|
             modifier.datasets[dataset_name].replicas.hosts += other_hosts
             modifier.datasets[dataset_name].replicas.hosts.uniq!
+            @service_installation.ensure_correct_file_permission(file)
           end
 
           @serf.join(*other_hosts)
@@ -200,8 +208,9 @@ module Droonga
         def absorb_data
           log("starting to copy data from #{source_host}")
 
-          CatalogModifier.modify do |modifier|
+          CatalogModifier.modify do |modifier, file|
             modifier.datasets[dataset_name].replicas.hosts = [host]
+            @service_installation.ensure_correct_file_permission(file)
           end
           sleep(5) #TODO: wait for restart. this should be done more safely, to avoid starting of absorbing with old catalog.json.
 
@@ -295,8 +304,9 @@ module Droonga
 
           log("new replicas: #{hosts.join(",")}")
 
-          CatalogModifier.modify do |modifier|
+          CatalogModifier.modify do |modifier, file|
             modifier.datasets[dataset].replicas.hosts = hosts
+            @service_installation.ensure_correct_file_permission(file)
           end
 
           @serf.join(*hosts)
@@ -312,9 +322,10 @@ module Droonga
           log("adding replicas: #{added_hosts.join(",")}")
           return if added_hosts.empty?
 
-          CatalogModifier.modify do |modifier|
+          CatalogModifier.modify do |modifier, file|
             modifier.datasets[dataset].replicas.hosts += added_hosts
             modifier.datasets[dataset].replicas.hosts.uniq!
+            @service_installation.ensure_correct_file_permission(file)
           end
 
           @serf.join(*added_hosts)
@@ -327,8 +338,9 @@ module Droonga
 
           log("removing replicas: #{hosts.join(",")}")
 
-          CatalogModifier.modify do |modifier|
+          CatalogModifier.modify do |modifier, file|
             modifier.datasets[dataset].replicas.hosts -= hosts
+            @service_installation.ensure_correct_file_permission(file)
           end
 
           #XXX Now we should restart serf agent to remove unjoined nodes from the list of members...
@@ -340,7 +352,10 @@ module Droonga
           path = Path.live_nodes
           nodes = live_nodes
           file_contents = JSON.pretty_generate(nodes)
-          SafeFileWriter.write(path, file_contents)
+          SafeFileWriter.write(path) do |output, file|
+            output.puts(file_contents)
+            @service_installation.ensure_correct_file_permission(file)
+          end
         end
 
         private
-------------- next part --------------
HTML����������������������������...
下載 



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