murakumo 0.4.6 → 0.4.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  module Murakumo
2
- VERSION = '0.4.6'
2
+ VERSION = '0.4.7'
3
3
 
4
4
  # Priority
5
5
  MASTER = 1
@@ -35,7 +35,7 @@ module Murakumo
35
35
  @logger = options[:logger]
36
36
 
37
37
  # 名前は小文字に変換
38
- datas = ([host_data] + alias_datas).map do |i|
38
+ @initial_datas = datas = ([host_data] + alias_datas).map do |i|
39
39
  name, ttl, priority, weight, activity = i
40
40
  name = name.downcase
41
41
  [name, ttl, priority, weight, activity]
@@ -48,34 +48,6 @@ module Murakumo
48
48
  # updateの後にホスト名をセットすること
49
49
  @hostname = host_data.first
50
50
 
51
- # ゴシップオブジェクトを生成
52
- @gossip = RGossip2.client({
53
- :initial_nodes => options[:initial_nodes],
54
- :address => @address,
55
- :data => datas,
56
- :auth_key => options[:auth_key],
57
- :port => options[:gossip_port],
58
- :node_lifetime => options[:gossip_node_lifetime],
59
- :gossip_interval => options[:gossip_send_interval],
60
- :receive_timeout => options[:gossip_receive_timeout],
61
- :logger => @logger,
62
- :ping_init_nodes => options[:ping_init_nodes],
63
- })
64
-
65
- # ノードの更新をフック
66
- @gossip.context.callback_handler = lambda do |act, addr, ts, dt, old_dt|
67
- case act
68
- when :add, :comeback
69
- # 追加・復帰の時は無条件に更新
70
- update(addr, dt)
71
- when :update
72
- # 更新の時はデータが更新されたときのみ更新
73
- update(addr, dt) if dt != old_dt
74
- when :delete
75
- delete(addr)
76
- end
77
- end
78
-
79
51
  # ヘルスチェック
80
52
  @health_checkers = {}
81
53
 
@@ -142,30 +114,63 @@ module Murakumo
142
114
  # Control of service
143
115
  def_delegators :@gossip, :stop, :clear_dead_list
144
116
 
145
- def start
146
- # デーモン化すると子プロセスはすぐ死ぬので
147
- # このタイミングでヘルスチェックを起動
148
- @health_checkers.each do |name, checker|
149
- checker.start
150
- end
151
-
152
- # アクティビティチェックを起動
153
- @activity_checkers.each do |name, checker|
154
- checker.start
155
- end
117
+ # ゴシップオブジェクトを生成
118
+ def create_gossip
119
+ @gossip = RGossip2.client({
120
+ :initial_nodes => @options[:initial_nodes],
121
+ :address => @address,
122
+ :data => @initial_datas,
123
+ :auth_key => @options[:auth_key],
124
+ :port => @options[:gossip_port],
125
+ :node_lifetime => @options[:gossip_node_lifetime],
126
+ :gossip_interval => @options[:gossip_send_interval],
127
+ :receive_timeout => @options[:gossip_receive_timeout],
128
+ :logger => @logger,
129
+ :ping_init_nodes => @options[:ping_init_nodes],
130
+ })
156
131
 
157
- # 起動時フックスクリプトの実行
158
- if @options[:on_start]
159
- exec_start_script(@options[:on_start])
132
+ # ノードの更新をフック
133
+ @gossip.context.callback_handler = lambda do |act, addr, ts, dt, old_dt|
134
+ case act
135
+ when :add, :comeback
136
+ # 追加・復帰の時は無条件に更新
137
+ update(addr, dt)
138
+ when :update
139
+ # 更新の時はデータが更新されたときのみ更新
140
+ update(addr, dt) if dt != old_dt
141
+ when :delete
142
+ delete(addr)
143
+ end
160
144
  end
145
+ end
161
146
 
147
+ def start
162
148
  @logger.info("Delay of a gossip start: #{@options[:gossip_start_delay]}")
163
149
 
164
150
  Thread.start do
165
151
  # ゴシッププロトコルの開始を遅延
166
152
  sleep @options[:gossip_start_delay]
167
153
 
168
- @logger.info('Gossip was started')
154
+ @logger.info('Gossip is starting')
155
+ # ゴシップオブジェクトを生成
156
+ create_gossip
157
+
158
+ # デーモン化すると子プロセスはすぐ死ぬので
159
+ # このタイミングでヘルスチェックを起動
160
+ @health_checkers.each do |name, checker|
161
+ checker.start
162
+ end
163
+
164
+ # アクティビティチェックを起動
165
+ @activity_checkers.each do |name, checker|
166
+ checker.start
167
+ end
168
+
169
+ # 起動時フックスクリプトの実行
170
+ if @options[:on_start]
171
+ exec_start_script(@options[:on_start])
172
+ end
173
+
169
174
  @gossip.start
170
175
  end
171
176
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: murakumo
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
4
+ hash: 1
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 6
10
- version: 0.4.6
9
+ - 7
10
+ version: 0.4.7
11
11
  platform: ruby
12
12
  authors:
13
13
  - winebarrel