roma 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +21 -0
  3. data/Gemfile.lock +47 -0
  4. data/bin/check_tc_flag +39 -0
  5. data/bin/roma-adm +43 -0
  6. data/bin/ssroute +0 -3
  7. data/lib/roma/async_process.rb +203 -208
  8. data/lib/roma/command/sys_command_receiver.rb +52 -10
  9. data/lib/roma/config.rb +3 -0
  10. data/lib/roma/event/handler.rb +11 -4
  11. data/lib/roma/event/jaro_winkler.rb +23 -0
  12. data/lib/roma/event/levenshtein.rb +23 -0
  13. data/lib/roma/plugin/plugin_cmd_aliases.rb +1 -32
  14. data/lib/roma/romad.rb +23 -0
  15. data/lib/roma/routing/cb_rttable.rb +2 -0
  16. data/lib/roma/routing/random_partitioner.rb +43 -36
  17. data/lib/roma/routing/rttable.rb +5 -3
  18. data/lib/roma/stats.rb +4 -1
  19. data/lib/roma/tools/check_tc_flag.rb +25 -0
  20. data/lib/roma/tools/cpdb.rb +3 -2
  21. data/lib/roma/tools/mkconfig.rb +22 -13
  22. data/lib/roma/tools/roma-adm.rb +82 -0
  23. data/lib/roma/version.rb +1 -1
  24. data/test/config4mhash.rb +2 -0
  25. data/test/config4storage_error.rb +2 -0
  26. data/test/config4test.rb +2 -0
  27. data/test/cpdbtest/config4cpdb_base.rb +67 -0
  28. data/test/cpdbtest/config4cpdb_dbm.rb +9 -0
  29. data/test/cpdbtest/config4cpdb_groonga.rb +9 -0
  30. data/test/cpdbtest/config4cpdb_rh.rb +9 -0
  31. data/test/cpdbtest/config4cpdb_sqlite3.rb +9 -0
  32. data/test/cpdbtest/config4cpdb_tc.rb +9 -0
  33. data/test/cpdbtest/config4cpdb_tcmem.rb +9 -0
  34. data/test/roma-test-utils.rb +140 -40
  35. data/test/t_cpdata.rb +76 -80
  36. data/test/t_cpdb.rb +95 -0
  37. data/test/t_logshift.rb +86 -0
  38. data/test/t_mhash.rb +56 -54
  39. data/test/t_routing_logic.rb +121 -0
  40. data/test/t_writebehind.rb +202 -207
  41. metadata +25 -8
  42. data/bin/tc_data_restore.rb +0 -123
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4c0c8e4fac7121c2eded725b92fdd79bbc38ee9a
4
- data.tar.gz: e1e9185743aa59abccd0ca9d16170806a91868e1
3
+ metadata.gz: a17bad1bbf7dabab9d9833e7458902691dae3117
4
+ data.tar.gz: e97e8fb05d535d000d276dcea350317629ef9a00
5
5
  SHA512:
6
- metadata.gz: f9e18113c7d99b224a9fd045fb52892f130d75c6e989b20e2e28cf168a13c7f3f1c8352fa72c7eec23c00c0490b28277e8acbc0d0a9166f10cef66d382a0c6cf
7
- data.tar.gz: d6a9693f346d9e536489ea591734f73b3879933b4f0ca1bb86a8d4904aa60afc7fb709df0fa3d23cfc01e2932ecdd69919a2cec3c7a21cd93f091b90d9782ae0
6
+ metadata.gz: f5dc132fd3475bcd2a4edceaa579bbf9b18319a84dda1ce7c443b1e40ab1cdb538e7bb791cb693d497b98867990ad31c294ee4f7969f1b20616b31a6bcb05de3
7
+ data.tar.gz: 3d2854df8f09147235a49a5891037fa65e5be84a59c73bacbfb3739decd8f0a3c728bdac2d44fb69e7aa2026c53ffef1abbe898695e62e5a098d7fcd9e76df59
data/CHANGELOG CHANGED
@@ -1,3 +1,24 @@
1
+ *1.1.0 (Aug 19 2015)*
2
+
3
+ * Change gemspec [Hiroaki Iwase] db2bb42
4
+ * Modify unit-test [Hiroaki Iwase] 7479034
5
+ * Adjust secondary node to redundancy over3 [Hiroaki Iwase] a6fafd8
6
+ * Add new func to check tokyo cabinet additional flag [Hiroaki Iwase] e17b3af
7
+ * Make new tool(roma-adm) [Hiroaki Iwase] 8cf2a03
8
+ * Add new func to check config.rb version when booting [Hiroaki Iwase] 1befb8f
9
+ * Add new func to check command miss spell by jaro-winkler [Hiroaki Iwase] 607c96e
10
+ * Enable to check failover status on stats[Hiroaki Iwase] d5a6a9f
11
+ * Enable to check log level on stats [Hiroaki Iwase] 14b1455
12
+ * Modify duplicate problem(plugin_storage.rb) of mkconfig script [Hiroaki Iwase] c057191
13
+ * Adjust groonga [Hiroaki Iwase] 0ee097c
14
+ * Add new command(shutdown_self) [Hiroaki Iwase] 8bb0aa5
15
+ * add new testcase about cpdb as Groonga msg [ooeyoshinori] 6744580
16
+ * Fix random routing logic for join [Hiroki Matsue] ea29af3
17
+ * Support new stats interface of client and refactor codes. [Hiroki Matsue] fd65292
18
+ * Add tests for routing logic and refactor tests [Hiroki Matsue] 1d52cbe
19
+ * Add Dynamic Log Shift size and age Test Script [Paras Patel] 081ebd2
20
+ * Remove unnecessary path in ssroute booting file [Hiroaki Iwase] 4f678cd
21
+
1
22
  *1.1.0 (Mar 30 2015)*
2
23
 
3
24
  * I improved connection performance during booting [Takahiro Tokunaga] ee411f0
@@ -0,0 +1,47 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ roma (1.2.0)
5
+ eventmachine (~> 1.0.0)
6
+ jaro_winkler (~> 1.3.5)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ archive-zip (0.7.0)
12
+ io-like (~> 0.3.0)
13
+ eventmachine (1.0.3)
14
+ ffi (1.9.6)
15
+ gdbm (1.2)
16
+ gqtp (1.0.6)
17
+ groonga-client (0.1.0)
18
+ gqtp (>= 1.0.4)
19
+ groonga-command (>= 1.0.8)
20
+ groonga-command (1.0.9)
21
+ json
22
+ io-like (0.3.0)
23
+ jaro_winkler (1.3.5)
24
+ json (1.8.1)
25
+ pkg-config (1.1.6)
26
+ power_assert (0.2.2)
27
+ rake (10.2.2)
28
+ rroonga (4.0.8)
29
+ archive-zip
30
+ groonga-client (>= 0.0.3)
31
+ json
32
+ pkg-config
33
+ sqlite3 (1.3.9)
34
+ test-unit (3.1.2)
35
+ power_assert
36
+
37
+ PLATFORMS
38
+ ruby
39
+
40
+ DEPENDENCIES
41
+ ffi
42
+ gdbm
43
+ rake
44
+ roma!
45
+ rroonga
46
+ sqlite3
47
+ test-unit
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env ruby
2
+ require 'pathname'
3
+ require 'optparse'
4
+
5
+ base_path = Pathname(__FILE__).dirname.parent.expand_path
6
+ $LOAD_PATH.unshift("#{base_path}/lib")
7
+
8
+ require 'roma/tools/check_tc_flag'
9
+
10
+ begin
11
+ # argument check
12
+ if ARGV.size <= 0 || ARGV.size > 4
13
+ puts "Argument Error: check_tc_flag --storage [TC storage path] --library [TC library path]"
14
+ exit
15
+ end
16
+
17
+ # opt parse
18
+ options = {}
19
+ opts = OptionParser.new
20
+ opts.banner="usage:#{File.basename($0)} --path [directory path]"
21
+ opts.on("-h", "--help", "Show this message") { puts opts; exit }
22
+
23
+ opts.on("--storage <dir_path>", "Specify the TC Storage directory", "Ex.)/roma/ds/localhost_10001/roma") {|v| options[:storage] = v}
24
+ opts.on("--library <dir_path>", "Specify the TC library directory", "Ex.)/roma/libexec") {|v| options[:library] = v}
25
+ opts.parse!(ARGV)
26
+
27
+ # add default path(current directory)
28
+ options[:storage] = '.' unless options.has_key?(:storage)
29
+ options[:library] = '.' unless options.has_key?(:library)
30
+
31
+ tc = Roma::CheckTc.new(options[:storage], options[:library])
32
+ res = tc.check_flag
33
+ res.each{|f, flag|
34
+ flag = "(no flag)" if flag.empty?
35
+ puts "#{f} : #{flag}"
36
+ }
37
+ rescue => e
38
+ puts e.message
39
+ end
@@ -0,0 +1,43 @@
1
+ #!/usr/bin/env ruby
2
+ require 'pathname'
3
+ require 'optparse'
4
+
5
+ base_path = Pathname(__FILE__).dirname.parent.expand_path
6
+ $LOAD_PATH.unshift("#{base_path}/lib")
7
+
8
+ require 'roma/tools/roma-adm'
9
+
10
+ begin
11
+ # opt parse
12
+ opts = OptionParser.new
13
+ opts.banner="usage:#{File.basename($0)} [command] [port No.]"
14
+ opts.on("-h", "--help", "Show this message") {
15
+ puts opts; exit
16
+ }
17
+ opts.parse!(ARGV)
18
+
19
+ # argument check
20
+ if ARGV.size < 1 || ARGV.size > 2
21
+ puts "Argument Error: roma-adm [adm-command] [port No.]"
22
+ exit
23
+ elsif ARGV.size == 2 && ARGV[1] !~ /^\d+$/
24
+ puts "Argument Error: roma-adm [adm-command] [port No.]"
25
+ puts "[port No.] should be Interger"
26
+ exit
27
+ end
28
+
29
+ cmd = ARGV[0]
30
+ if ARGV[1]
31
+ port = ARGV[1]
32
+ else
33
+ port = "12000" # defaul port
34
+ end
35
+
36
+ adm = Roma::Adm.new(cmd, port)
37
+ adm.check_type
38
+ res = adm.send_command
39
+ puts "\r\n"
40
+ puts res
41
+ rescue => e
42
+ puts e.message
43
+ end
@@ -4,7 +4,4 @@ require 'pathname'
4
4
  base_path = Pathname(__FILE__).dirname.parent.expand_path
5
5
  $LOAD_PATH.unshift("#{base_path}/lib")
6
6
 
7
- client_base_path = Pathname(__FILE__).dirname.parent.parent.expand_path
8
- $LOAD_PATH.unshift("#{client_base_path}/roma-ruby-client/lib")
9
-
10
7
  require 'roma/tools/ssroute'
@@ -1,15 +1,14 @@
1
1
  require 'thread'
2
2
  require 'digest/sha1'
3
- require "timeout"
3
+ require 'timeout'
4
4
 
5
5
  module Roma
6
-
7
6
  class AsyncMessage
8
7
  attr_accessor :event
9
8
  attr_accessor :args
10
9
  attr_accessor :callback
11
10
 
12
- def initialize(ev,ag=nil,&cb)
11
+ def initialize(ev, ag = nil, &cb)
13
12
  @event = ev
14
13
  @args = ag
15
14
  @callback = cb
@@ -32,7 +31,6 @@ module Roma
32
31
  end
33
32
 
34
33
  module AsyncProcess
35
-
36
34
  @@async_queue = Queue.new
37
35
  @@async_queue_latency = Queue.new
38
36
 
@@ -45,17 +43,17 @@ module Roma
45
43
  end
46
44
 
47
45
  def start_async_process
48
- @async_thread = Thread.new{
46
+ @async_thread = Thread.new do
49
47
  async_process_loop
50
- }
48
+ end
51
49
  @async_thread[:name] = __method__
52
50
 
53
- @async_thread_latency = Thread.new{
51
+ @async_thread_latency = Thread.new do
54
52
  async_process_loop_for_latency
55
- }
53
+ end
56
54
  @async_thread_latency[:name] = __method__
57
- rescue =>e
58
- @log.error("#{e}\n#{$@}")
55
+ rescue => e
56
+ @log.error("#{e}\n#{$ERROR_POSITION}")
59
57
  end
60
58
 
61
59
  private
@@ -77,66 +75,66 @@ module Roma
77
75
  end
78
76
 
79
77
  def async_process_loop
80
- loop {
78
+ loop do
81
79
  while msg = @@async_queue.pop
82
- if send("asyncev_#{msg.event}",msg.args)
83
- msg.callback.call(msg,true) if msg.callback
80
+ if send("asyncev_#{msg.event}", msg.args)
81
+ msg.callback.call(msg, true) if msg.callback
84
82
  else
85
83
  if msg.retry?
86
- t = Thread.new{
84
+ t = Thread.new do
87
85
  msg.wait
88
86
  msg.incr_count
89
87
  @@async_queue.push(msg)
90
- }
88
+ end
91
89
  t[:name] = __method__
92
90
  else
93
91
  @log.error("async process retry out:#{msg.inspect}")
94
- msg.callback.call(msg,false) if msg.callback
92
+ msg.callback.call(msg, false) if msg.callback
95
93
  end
96
94
  end
97
95
  end
98
- }
99
- rescue =>e
100
- @log.error("#{e}\n#{$@}")
96
+ end
97
+ rescue => e
98
+ @log.error("#{e}\n#{$ERROR_POSITION}")
101
99
  retry
102
100
  end
103
101
 
104
102
  def async_process_loop_for_latency
105
- loop {
103
+ loop do
106
104
  while msg = @@async_queue_latency.pop
107
- if send("asyncev_#{msg.event}",msg.args)
108
- msg.callback.call(msg,true) if msg.callback
105
+ if send("asyncev_#{msg.event}", msg.args)
106
+ msg.callback.call(msg, true) if msg.callback
109
107
  else
110
108
  if msg.retry?
111
- t = Thread.new{
109
+ t = Thread.new do
112
110
  msg.wait
113
111
  msg.incr_count
114
112
  @@async_queue_latency.push(msg)
115
- }
113
+ end
116
114
  t[:name] = __method__
117
115
  else
118
116
  @log.error("async process retry out:#{msg.inspect}")
119
- msg.callback.call(msg,false) if msg.callback
117
+ msg.callback.call(msg, false) if msg.callback
120
118
  end
121
119
  end
122
120
  end
123
- }
124
- rescue =>e
125
- @log.error("#{e}\n#{$@}")
121
+ end
122
+ rescue => e
123
+ @log.error("#{e}\n#{$ERROR_POSITION}")
126
124
  retry
127
125
  end
128
126
 
129
127
  def asyncev_broadcast_cmd(args)
130
128
  @log.debug("#{__method__} #{args.inspect}")
131
129
  cmd, nids, tout = args
132
- t = Thread::new{
130
+ t = Thread.new do
133
131
  async_broadcast_cmd("#{cmd}\r\n", nids, tout)
134
- }
132
+ end
135
133
  t[:name] = __method__
136
134
  true
137
135
  end
138
136
 
139
- def asyncev_start_join_process(args)
137
+ def asyncev_start_join_process(_args)
140
138
  @log.debug(__method__)
141
139
  if @stats.run_join
142
140
  @log.error("#{__method__}:join process running")
@@ -151,11 +149,11 @@ module Roma
151
149
  return true
152
150
  end
153
151
  @stats.run_join = true
154
- t = Thread::new do
152
+ t = Thread.new do
155
153
  begin
156
154
  join_process
157
- rescue =>e
158
- @log.error("#{__method__}:#{e.inspect} #{$@}")
155
+ rescue => e
156
+ @log.error("#{__method__}:#{e.inspect} #{$ERROR_POSITION}")
159
157
  ensure
160
158
  @stats.run_join = false
161
159
  @stats.join_ap = nil
@@ -165,7 +163,7 @@ module Roma
165
163
  true
166
164
  end
167
165
 
168
- def asyncev_start_balance_process(args)
166
+ def asyncev_start_balance_process(_args)
169
167
  @log.debug(__method__)
170
168
  if @stats.run_join
171
169
  @log.error("#{__method__}:join process running")
@@ -180,11 +178,11 @@ module Roma
180
178
  return true
181
179
  end
182
180
  @stats.run_balance = true
183
- t = Thread::new do
181
+ t = Thread.new do
184
182
  begin
185
183
  balance_process
186
- rescue =>e
187
- @log.error("#{__method__}:#{e.inspect} #{$@}")
184
+ rescue => e
185
+ @log.error("#{__method__}:#{e.inspect} #{$ERROR_POSITION}")
188
186
  ensure
189
187
  @stats.run_balance = false
190
188
  end
@@ -194,14 +192,14 @@ module Roma
194
192
  end
195
193
 
196
194
  def asyncev_redundant(args)
197
- nid,hname,k,d,clk,expt,v = args
195
+ nid, hname, k, d, clk, expt, v = args
198
196
  @log.debug("#{__method__} #{args.inspect}")
199
197
  unless @rttable.nodes.include?(nid)
200
198
  @log.warn("async redundant failed:#{nid} does not found in routing table.#{k}\e#{hname} #{d} #{clk} #{expt} #{v.length}")
201
199
  return true # no retry
202
200
  end
203
- res = async_send_cmd(nid,"rset #{k}\e#{hname} #{d} #{clk} #{expt} #{v.length}\r\n#{v}\r\n",10)
204
- if res == nil || res.start_with?("ERROR")
201
+ res = async_send_cmd(nid, "rset #{k}\e#{hname} #{d} #{clk} #{expt} #{v.length}\r\n#{v}\r\n", 10)
202
+ if res.nil? || res.start_with?('ERROR')
205
203
  @log.warn("async redundant failed:#{k}\e#{hname} #{d} #{clk} #{expt} #{v.length} -> #{nid}")
206
204
  return false # retry
207
205
  end
@@ -209,14 +207,14 @@ module Roma
209
207
  end
210
208
 
211
209
  def asyncev_zredundant(args)
212
- nid,hname,k,d,clk,expt,zv = args
210
+ nid, hname, k, d, clk, expt, zv = args
213
211
  @log.debug("#{__method__} #{args.inspect}")
214
212
  unless @rttable.nodes.include?(nid)
215
213
  @log.warn("async zredundant failed:#{nid} does not found in routing table.#{k}\e#{hname} #{d} #{clk} #{expt} #{zv.length}")
216
214
  return true # no retry
217
215
  end
218
- res = async_send_cmd(nid,"rzset #{k}\e#{hname} #{d} #{clk} #{expt} #{zv.length}\r\n#{zv}\r\n",10)
219
- if res == nil || res.start_with?("ERROR")
216
+ res = async_send_cmd(nid, "rzset #{k}\e#{hname} #{d} #{clk} #{expt} #{zv.length}\r\n#{zv}\r\n", 10)
217
+ if res.nil? || res.start_with?('ERROR')
220
218
  @log.warn("async zredundant failed:#{k}\e#{hname} #{d} #{clk} #{expt} #{v.length} -> #{nid}")
221
219
  return false # retry
222
220
  end
@@ -224,13 +222,13 @@ module Roma
224
222
  end
225
223
 
226
224
  def asyncev_rdelete(args)
227
- nid,hname,k,clk = args
225
+ nid, hname, k, clk = args
228
226
  @log.debug("#{__method__} #{args.inspect}")
229
227
  unless @rttable.nodes.include?(nid)
230
228
  @log.warn("async rdelete failed:#{nid} does not found in routing table.#{k}\e#{hname} #{clk}")
231
229
  return true # no retry
232
230
  end
233
- res = async_send_cmd(nid,"rdelete #{k}\e#{hname} #{clk}\r\n",10)
231
+ res = async_send_cmd(nid, "rdelete #{k}\e#{hname} #{clk}\r\n", 10)
234
232
  unless res
235
233
  @log.warn("async redundant failed:#{k}\e#{hname} #{clk} -> #{nid}")
236
234
  return false # retry
@@ -245,11 +243,11 @@ module Roma
245
243
  @log.warn("#{__method__}:already be iterated storage process.")
246
244
  else
247
245
  @stats.run_iterate_storage = true
248
- t = Thread::new do
246
+ t = Thread.new do
249
247
  begin
250
248
  sync_a_vnode(vn.to_i, nid, p == 'true')
251
- rescue =>e
252
- @log.error("#{__method__}:#{e.inspect} #{$@}")
249
+ rescue => e
250
+ @log.error("#{__method__}:#{e.inspect} #{$ERROR_POSITION}")
253
251
  ensure
254
252
  @stats.run_iterate_storage = false
255
253
  end
@@ -273,11 +271,11 @@ module Roma
273
271
  return true
274
272
  end
275
273
  @stats.run_recover = true
276
- t = Thread::new do
274
+ t = Thread.new do
277
275
  begin
278
276
  acquired_recover_process
279
277
  rescue => e
280
- @log.error("#{__method__}:#{e.inspect} #{$@}")
278
+ @log.error("#{__method__}:#{e.inspect} #{$ERROR_POSITION}")
281
279
  ensure
282
280
  @stats.run_recover = false
283
281
  end
@@ -287,11 +285,11 @@ module Roma
287
285
 
288
286
  def asyncev_start_auto_recover_process(args)
289
287
  @log.debug("#{__method__} #{args.inspect}")
290
- ###run_join don't have possibility to be true in this case.
291
- #if @stats.run_join
288
+ # ##run_join don't have possibility to be true in this case.
289
+ # if @stats.run_join
292
290
  # @log.error("#{__method__}:join process running")
293
291
  # return true
294
- #end
292
+ # end
295
293
  if @stats.run_recover
296
294
  @log.error("#{__method__}:recover process running.")
297
295
  return false
@@ -301,35 +299,35 @@ module Roma
301
299
  return true
302
300
  end
303
301
 
304
- @rttable.auto_recover_status = "preparing"
305
- t = Thread::new do
302
+ @rttable.auto_recover_status = 'preparing'
303
+ t = Thread.new do
306
304
  begin
307
- timeout(@rttable.auto_recover_time){
308
- loop{
305
+ timeout(@rttable.auto_recover_time)do
306
+ loop do
309
307
  sleep 1
310
- break if @rttable.auto_recover_status != "preparing"
311
- #break if @stats.run_join #run_join don't have possibility to be true in this case.
308
+ break if @rttable.auto_recover_status != 'preparing'
309
+ # break if @stats.run_join #run_join don't have possibility to be true in this case.
312
310
  break if @stats.run_recover
313
311
  break if @stats.run_balance
314
- }
315
- }
316
- @log.debug("inactivated AUTO_RECOVER")
312
+ end
313
+ end
314
+ @log.debug('inactivated AUTO_RECOVER')
317
315
  rescue
318
316
  case @rttable.lost_action
319
317
  when :auto_assign, :shutdown
320
318
  @stats.run_recover = true
321
- @rttable.auto_recover_status = "executing"
322
- begin
323
- @log.debug("auto recover start")
324
- acquired_recover_process
325
- rescue => e
326
- @log.error("#{__method__}:#{e.inspect} #{$@}")
327
- ensure
328
- @stats.run_recover = false
329
- @rttable.auto_recover_status = "waiting"
330
- end
319
+ @rttable.auto_recover_status = 'executing'
320
+ begin
321
+ @log.debug('auto recover start')
322
+ acquired_recover_process
323
+ rescue => e
324
+ @log.error("#{__method__}:#{e.inspect} #{$ERROR_POSITION}")
325
+ ensure
326
+ @stats.run_recover = false
327
+ @rttable.auto_recover_status = 'waiting'
328
+ end
331
329
  when :no_action
332
- @log.debug("auto recover NOT start. Because lost action is [no_action]")
330
+ @log.debug('auto recover NOT start. Because lost action is [no_action]')
333
331
  end
334
332
  end
335
333
  end
@@ -344,11 +342,11 @@ module Roma
344
342
  @stats.run_release = true
345
343
  @stats.run_iterate_storage = true
346
344
  @stats.spushv_protection = true
347
- t = Thread::new do
345
+ t = Thread.new do
348
346
  begin
349
347
  release_process
350
348
  rescue => e
351
- @log.error("#{__method__}:#{e.inspect} #{$@}")
349
+ @log.error("#{__method__}:#{e.inspect} #{$ERROR_POSITION}")
352
350
  ensure
353
351
  @stats.run_iterate_storage = false
354
352
  @stats.run_release = false
@@ -368,7 +366,7 @@ module Roma
368
366
  break unless @do_acquired_recover_process
369
367
  break if @rttable.num_of_vn(@stats.ap_str)[2] == 0 # short vnodes
370
368
 
371
- vn, nodes, is_primary = @rttable.select_vn_for_recover(exclude_nodes)
369
+ vn, nodes, is_primary = @rttable.select_vn_for_recover(exclude_nodes, @stats.rep_host)
372
370
  break unless vn
373
371
 
374
372
  if nodes.length != 0
@@ -383,7 +381,7 @@ module Roma
383
381
  end
384
382
  @log.info("#{__method__} has done.")
385
383
  rescue => e
386
- @log.error("#{e.inspect} #{$@}")
384
+ @log.error("#{e.inspect} #{$ERROR_POSITION}")
387
385
  ensure
388
386
  @do_acquired_recover_process = false
389
387
  end
@@ -395,10 +393,10 @@ module Roma
395
393
  exclude_nodes = @rttable.exclude_nodes_for_join(@stats.ap_str, @stats.rep_host)
396
394
 
397
395
  @do_join_process = true
398
- while (@rttable.vnode_balance(@stats.ap_str) == :less && count < nv) do
396
+ while @rttable.vnode_balance(@stats.ap_str) == :less && count < nv
399
397
  break unless @do_join_process
400
398
 
401
- vn, nodes, is_primary = @rttable.select_vn_for_join(exclude_nodes)
399
+ vn, nodes, is_primary = @rttable.select_vn_for_join(exclude_nodes, @stats.rep_host)
402
400
  unless vn
403
401
  @log.warn("#{__method__}:vnode does not found")
404
402
  return false
@@ -412,7 +410,7 @@ module Roma
412
410
  end
413
411
  end
414
412
  rescue => e
415
- @log.error("#{e.inspect} #{$@}")
413
+ @log.error("#{e.inspect} #{$ERROR_POSITION}")
416
414
  ensure
417
415
  @log.info("#{__method__} has done.")
418
416
  @do_join_process = false
@@ -425,10 +423,10 @@ module Roma
425
423
  exclude_nodes = @rttable.exclude_nodes_for_balance(@stats.ap_str, @stats.rep_host)
426
424
 
427
425
  @do_balance_process = true
428
- while (@rttable.vnode_balance(@stats.ap_str) == :less && count < nv) do
426
+ while @rttable.vnode_balance(@stats.ap_str) == :less && count < nv
429
427
  break unless @do_balance_process
430
428
 
431
- vn, nodes, is_primary = @rttable.select_vn_for_balance(exclude_nodes)
429
+ vn, nodes, is_primary = @rttable.select_vn_for_balance(exclude_nodes, @stats.rep_host)
432
430
  unless vn
433
431
  @log.warn("#{__method__}:vnode does not found")
434
432
  return false
@@ -443,7 +441,7 @@ module Roma
443
441
  end
444
442
  @log.info("#{__method__} has done.")
445
443
  rescue => e
446
- @log.error("#{e.inspect} #{$@}")
444
+ @log.error("#{e.inspect} #{$ERROR_POSITION}")
447
445
  ensure
448
446
  @do_balance_process = false
449
447
  end
@@ -454,16 +452,16 @@ module Roma
454
452
  res = con.gets # receive 'PUSHED\r\n' | 'REJECTED\r\n' | 'ERROR\r\n'
455
453
  if res == "REJECTED\r\n"
456
454
  @log.warn("#{__method__}:request was rejected from #{src_nid}.")
457
- Roma::Messaging::ConPool.instance.return_connection(src_nid,con)
455
+ Roma::Messaging::ConPool.instance.return_connection(src_nid, con)
458
456
  return :rejected
459
457
  elsif res != "PUSHED\r\n"
460
458
  @log.warn("#{__method__}:#{res}")
461
459
  return :rejected
462
460
  end
463
- Roma::Messaging::ConPool.instance.return_connection(src_nid,con)
461
+ Roma::Messaging::ConPool.instance.return_connection(src_nid, con)
464
462
  # waiting for pushv
465
463
  count = 0
466
- while @rttable.search_nodes(vn).include?(@stats.ap_str)==false && count < @stats.reqpushv_timeout_count
464
+ while @rttable.search_nodes(vn).include?(@stats.ap_str) == false && count < @stats.reqpushv_timeout_count
467
465
  sleep 0.1
468
466
  count += 1
469
467
  end
@@ -472,8 +470,8 @@ module Roma
472
470
  return :timeout
473
471
  end
474
472
  true
475
- rescue =>e
476
- @log.error("#{__method__}:#{e.inspect} #{$@}")
473
+ rescue => e
474
+ @log.error("#{__method__}:#{e.inspect} #{$ERROR_POSITION}")
477
475
  @rttable.proc_failed(src_nid)
478
476
  false
479
477
  end
@@ -487,7 +485,7 @@ module Roma
487
485
  end
488
486
 
489
487
  @do_release_process = true
490
- while(@rttable.has_node?(@stats.ap_str)) do
488
+ while @rttable.has_node?(@stats.ap_str)
491
489
  break unless @do_release_process
492
490
  @rttable.each_vnode do |vn, nids|
493
491
  break unless @do_release_process
@@ -507,8 +505,8 @@ module Roma
507
505
  end
508
506
  end
509
507
  @log.info("#{__method__} has done.")
510
- rescue =>e
511
- @log.error("#{e}\n#{$@}")
508
+ rescue => e
509
+ @log.error("#{e}\n#{$ERROR_POSITION}")
512
510
  ensure
513
511
  @do_release_process = false
514
512
  Roma::Messaging::ConPool.instance.close_all
@@ -517,23 +515,23 @@ module Roma
517
515
  def sync_a_vnode_for_release(vn, to_nid, new_nids)
518
516
  nids = @rttable.search_nodes(vn)
519
517
 
520
- if nids.include?(to_nid)==false
518
+ if nids.include?(to_nid) == false
521
519
  @log.debug("#{__method__}:#{vn} #{to_nid}")
522
520
  # change routing data at the vnode and synchronize a data
523
521
  nids << to_nid
524
522
  return false unless @rttable.transaction(vn, nids)
525
523
 
526
524
  # synchronize a data
527
- @storages.each_key{ |hname|
525
+ @storages.each_key do |hname|
528
526
  res = push_a_vnode_stream(hname, vn, to_nid)
529
527
 
530
- if res != "STORED"
528
+ if res != 'STORED'
531
529
  @rttable.rollback(vn)
532
530
  @log.error("#{__method__}:push_a_vnode was failed:hname=#{hname} vn=#{vn}:#{res}")
533
- return :abort if res.start_with?("SERVER_ERROR")
531
+ return :abort if res.start_with?('SERVER_ERROR')
534
532
  return false
535
533
  end
536
- }
534
+ end
537
535
 
538
536
  if (clk = @rttable.commit(vn)) == false
539
537
  @rttable.rollback(vn)
@@ -543,40 +541,40 @@ module Roma
543
541
 
544
542
  clk = @rttable.set_route(vn, clk, new_nids)
545
543
  if clk.is_a?(Integer) == false
546
- clk,new_nids = @rttable.search_nodes_with_clk(vn)
544
+ clk, new_nids = @rttable.search_nodes_with_clk(vn)
547
545
  end
548
546
 
549
547
  cmd = "setroute #{vn} #{clk - 1}"
550
- new_nids.each{ |nn| cmd << " #{nn}"}
548
+ new_nids.each { |nn| cmd << " #{nn}" }
551
549
  res = async_broadcast_cmd("#{cmd}\r\n")
552
550
  @log.debug("#{__method__}:async_broadcast_cmd(#{cmd}) #{res}")
553
551
  end
554
552
 
555
553
  return true
556
- rescue =>e
557
- @log.error("#{e}\n#{$@}")
554
+ rescue => e
555
+ @log.error("#{e}\n#{$ERROR_POSITION}")
558
556
  false
559
557
  end
560
558
 
561
- def sync_a_vnode(vn, to_nid, is_primary=nil)
559
+ def sync_a_vnode(vn, to_nid, is_primary = nil)
562
560
  nids = @rttable.search_nodes(vn)
563
561
 
564
- if nids.include?(to_nid)==false || (is_primary && nids[0]!=to_nid)
562
+ if nids.include?(to_nid) == false || (is_primary && nids[0] != to_nid)
565
563
  @log.debug("#{__method__}:#{vn} #{to_nid} #{is_primary}")
566
564
  # change routing data at the vnode and synchronize a data
567
565
  nids << to_nid
568
566
  return false unless @rttable.transaction(vn, nids)
569
567
 
570
568
  # synchronize a data
571
- @storages.each_key{ |hname|
569
+ @storages.each_key do |hname|
572
570
  res = push_a_vnode_stream(hname, vn, to_nid)
573
571
 
574
- if res != "STORED"
572
+ if res != 'STORED'
575
573
  @rttable.rollback(vn)
576
574
  @log.error("#{__method__}:push_a_vnode was failed:hname=#{hname} vn=#{vn}:#{res}")
577
575
  return false
578
576
  end
579
- }
577
+ end
580
578
 
581
579
  if (clk = @rttable.commit(vn)) == false
582
580
  @rttable.rollback(vn)
@@ -587,27 +585,27 @@ module Roma
587
585
  nids = edit_nodes(nids, to_nid, is_primary)
588
586
  clk = @rttable.set_route(vn, clk, nids)
589
587
  if clk.is_a?(Integer) == false
590
- clk,nids = @rttable.search_nodes_with_clk(vn)
588
+ clk, nids = @rttable.search_nodes_with_clk(vn)
591
589
  end
592
590
 
593
591
  cmd = "setroute #{vn} #{clk - 1}"
594
- nids.each{ |nn| cmd << " #{nn}"}
592
+ nids.each { |nn| cmd << " #{nn}" }
595
593
  res = async_broadcast_cmd("#{cmd}\r\n")
596
594
  @log.debug("#{__method__}:async_broadcast_cmd(#{cmd}) #{res}")
597
595
  else
598
596
  # synchronize a data
599
- @storages.each_key{ |hname|
597
+ @storages.each_key do |hname|
600
598
  res = push_a_vnode_stream(hname, vn, to_nid)
601
- if res != "STORED"
599
+ if res != 'STORED'
602
600
  @log.error("#{__method__}:push_a_vnode was failed:hname=#{hname} vn=#{vn}:#{res}")
603
601
  return false
604
602
  end
605
- }
603
+ end
606
604
  end
607
605
 
608
606
  return true
609
- rescue =>e
610
- @log.error("#{e}\n#{$@}")
607
+ rescue => e
608
+ @log.error("#{e}\n#{$ERROR_POSITION}")
611
609
  false
612
610
  end
613
611
 
@@ -636,7 +634,7 @@ module Roma
636
634
 
637
635
  if is_primary
638
636
  # [new_nid, node_a]
639
- nodes.insert(0,new_nid)
637
+ nodes.insert(0, new_nid)
640
638
  else
641
639
  # [node_a, new_nid]
642
640
  nodes << new_nid
@@ -666,64 +664,63 @@ module Roma
666
664
  unless @do_push_a_vnode_stream
667
665
  con.close
668
666
  @log.error("#{__method__}:canceled in hname=#{hname} vn=#{vn} nid=#{nid}")
669
- return "CANCELED"
667
+ return 'CANCELED'
670
668
  end
671
669
 
672
670
  con.write(data)
673
671
  sleep @stats.stream_copy_wait_param
674
672
  end
675
- con.write("\0"*20) # end of steram
673
+ con.write("\0" * 20) # end of steram
676
674
 
677
675
  res = con.gets # STORED\r\n or error string
678
- Roma::Messaging::ConPool.instance.return_connection(nid,con)
676
+ Roma::Messaging::ConPool.instance.return_connection(nid, con)
679
677
  res.chomp! if res
680
678
  if res_dump == false
681
679
  @log.error("#{__method__}:each_vn_dump in hname=#{hname} vn=#{vn} nid=#{nid}")
682
- return "CANCELED"
680
+ return 'CANCELED'
683
681
  end
684
682
  res
685
- rescue =>e
686
- @log.error("#{e}\n#{$@}")
683
+ rescue => e
684
+ @log.error("#{e}\n#{$ERROR_POSITION}")
687
685
  e.to_s
688
686
  end
689
687
 
690
-
691
- def asyncev_start_storage_clean_up_process(args)
692
- # @log.info("#{__method__}")
688
+ def asyncev_start_storage_clean_up_process(_args)
689
+ # @log.info("#{__method__}")
693
690
  if @stats.run_storage_clean_up
694
691
  @log.error("#{__method__}:already in being")
695
692
  return
696
693
  end
697
694
  @stats.run_storage_clean_up = true
698
- t = Thread::new{
695
+ t = Thread.new do
699
696
  begin
700
697
  storage_clean_up_process
701
- rescue =>e
702
- @log.error("#{__method__}:#{e.inspect} #{$@}")
698
+ rescue => e
699
+ @log.error("#{__method__}:#{e.inspect} #{$ERROR_POSITION}")
703
700
  ensure
704
701
  @stats.last_clean_up = Time.now
705
702
  @stats.run_storage_clean_up = false
706
703
  end
707
- }
704
+ end
708
705
  t[:name] = __method__
709
706
  end
710
707
 
711
708
  def storage_clean_up_process
712
709
  @log.info("#{__method__}:start")
713
710
  me = @stats.ap_str
714
- vnhash={}
711
+ vnhash = {}
715
712
  @rttable.each_vnode do |vn, nids|
716
713
  if nids.include?(me)
717
714
  if nids[0] == me
718
715
  vnhash[vn] = :primary
719
716
  else
720
- vnhash[vn] = :secondary
717
+ vnhash[vn] = "secondary#{nids.index(me)}".to_sym
721
718
  end
722
719
  end
723
720
  end
724
721
  t = Time.now.to_i - Roma::Config::STORAGE_DELMARK_EXPTIME
725
722
  count = 0
726
- @storages.each_pair do |hname,st|
723
+ @storages.each_pair do |hname, st|
727
724
  break unless @stats.do_clean_up?
728
725
  st.each_clean_up(t, vnhash) do |key, vn|
729
726
  # @log.debug("#{__method__}:key=#{key} vn=#{vn}")
@@ -733,7 +730,7 @@ module Roma
733
730
  nodes = @rttable.search_nodes_for_write(vn)
734
731
  if nodes && nodes.length > 1
735
732
  nodes[1..-1].each do |nid|
736
- res = async_send_cmd(nid,"out #{key}\e#{hname} #{vn}\r\n")
733
+ res = async_send_cmd(nid, "out #{key}\e#{hname} #{vn}\r\n")
737
734
  unless res
738
735
  @log.warn("send out command failed:#{key}\e#{hname} #{vn} -> #{nid}")
739
736
  end
@@ -746,7 +743,7 @@ module Roma
746
743
  end
747
744
  end
748
745
  end
749
- if count>0
746
+ if count > 0
750
747
  @log.info("#{__method__}:#{count} keys deleted.")
751
748
  end
752
749
 
@@ -763,46 +760,46 @@ module Roma
763
760
  end
764
761
 
765
762
  def asyncev_calc_latency_average(args)
766
- latency,cmd = args
767
- #@log.debug(__method__)
768
-
769
- if !@stats.latency_data.key?(cmd) #only first execute target cmd
770
- @stats.latency_data[cmd].store("latency", Array.new())
771
- @stats.latency_data[cmd].store("latency_max", Hash.new())
772
- @stats.latency_data[cmd]["latency_max"].store("current", 0)
773
- @stats.latency_data[cmd].store("latency_min", Hash.new())
774
- @stats.latency_data[cmd]["latency_min"].store("current", 99999)
775
- @stats.latency_data[cmd].store("time", Time.now.to_i)
763
+ latency, cmd = args
764
+ # @log.debug(__method__)
765
+
766
+ unless @stats.latency_data.key?(cmd) # only first execute target cmd
767
+ @stats.latency_data[cmd].store('latency', [])
768
+ @stats.latency_data[cmd].store('latency_max', {})
769
+ @stats.latency_data[cmd]['latency_max'].store('current', 0)
770
+ @stats.latency_data[cmd].store('latency_min', {})
771
+ @stats.latency_data[cmd]['latency_min'].store('current', 99_999)
772
+ @stats.latency_data[cmd].store('time', Time.now.to_i)
776
773
  end
777
774
 
778
775
  begin
779
- @stats.latency_data[cmd]["latency"].delete_at(0) if @stats.latency_data[cmd]["latency"].length >= 10
780
- @stats.latency_data[cmd]["latency"].push(latency)
776
+ @stats.latency_data[cmd]['latency'].delete_at(0) if @stats.latency_data[cmd]['latency'].length >= 10
777
+ @stats.latency_data[cmd]['latency'].push(latency)
781
778
 
782
- @stats.latency_data[cmd]["latency_max"]["current"] = latency if latency > @stats.latency_data[cmd]["latency_max"]["current"]
783
- @stats.latency_data[cmd]["latency_min"]["current"] = latency if latency < @stats.latency_data[cmd]["latency_min"]["current"]
779
+ @stats.latency_data[cmd]['latency_max']['current'] = latency if latency > @stats.latency_data[cmd]['latency_max']['current']
780
+ @stats.latency_data[cmd]['latency_min']['current'] = latency if latency < @stats.latency_data[cmd]['latency_min']['current']
784
781
 
785
- rescue =>e
786
- @log.error("#{__method__}:#{e.inspect} #{$@}")
782
+ rescue => e
783
+ @log.error("#{__method__}:#{e.inspect} #{$ERROR_POSITION}")
787
784
 
788
785
  ensure
789
- if @stats.latency_check_time_count && Time.now.to_i - @stats.latency_data[cmd]["time"] > @stats.latency_check_time_count
790
- average = @stats.latency_data[cmd]["latency"].inject(0.0){|r,i| r+=i }/@stats.latency_data[cmd]["latency"].size
791
- max = @stats.latency_data[cmd]["latency_max"]["current"]
792
- min = @stats.latency_data[cmd]["latency_min"]["current"]
793
- @log.debug("Latency average[#{cmd}]: #{sprintf("%.8f", average)}"+
794
- "(denominator=#{@stats.latency_data[cmd]["latency"].length}"+
795
- " max=#{sprintf("%.8f", max)}"+
796
- " min=#{sprintf("%.8f", min)})"
786
+ if @stats.latency_check_time_count && Time.now.to_i - @stats.latency_data[cmd]['time'] > @stats.latency_check_time_count
787
+ average = @stats.latency_data[cmd]['latency'].inject(0.0) { |r, i| r += i } / @stats.latency_data[cmd]['latency'].size
788
+ max = @stats.latency_data[cmd]['latency_max']['current']
789
+ min = @stats.latency_data[cmd]['latency_min']['current']
790
+ @log.debug("Latency average[#{cmd}]: #{sprintf('%.8f', average)}"\
791
+ "(denominator=#{@stats.latency_data[cmd]['latency'].length}"\
792
+ " max=#{sprintf('%.8f', max)}"\
793
+ " min=#{sprintf('%.8f', min)})"
797
794
  )
798
795
 
799
- @stats.latency_data[cmd]["time"] = Time.now.to_i
800
- @stats.latency_data[cmd]["latency_past"] = @stats.latency_data[cmd]["latency"]
801
- @stats.latency_data[cmd]["latency"] = []
802
- @stats.latency_data[cmd]["latency_max"]["past"] = @stats.latency_data[cmd]["latency_max"]["current"]
803
- @stats.latency_data[cmd]["latency_max"]["current"] = 0
804
- @stats.latency_data[cmd]["latency_min"]["past"] = @stats.latency_data[cmd]["latency_min"]["current"]
805
- @stats.latency_data[cmd]["latency_min"]["current"] = 99999
796
+ @stats.latency_data[cmd]['time'] = Time.now.to_i
797
+ @stats.latency_data[cmd]['latency_past'] = @stats.latency_data[cmd]['latency']
798
+ @stats.latency_data[cmd]['latency'] = []
799
+ @stats.latency_data[cmd]['latency_max']['past'] = @stats.latency_data[cmd]['latency_max']['current']
800
+ @stats.latency_data[cmd]['latency_max']['current'] = 0
801
+ @stats.latency_data[cmd]['latency_min']['past'] = @stats.latency_data[cmd]['latency_min']['current']
802
+ @stats.latency_data[cmd]['latency_min']['current'] = 99_999
806
803
  end
807
804
  end
808
805
  true
@@ -817,13 +814,13 @@ module Roma
817
814
  @log.error("Can not flush storage. stat = #{st.dbs[dn]}")
818
815
  return true
819
816
  end
820
- t = Thread::new do
817
+ t = Thread.new do
821
818
  begin
822
819
  st.flush_db(dn)
823
- st.set_db_stat(dn,:safecopy_flushed)
820
+ st.set_db_stat(dn, :safecopy_flushed)
824
821
  @log.info("#{__method__}:storage has flushed. (#{hname}, #{dn})")
825
- rescue =>e
826
- @log.error("#{__method__}:#{e.inspect} #{$@}")
822
+ rescue => e
823
+ @log.error("#{__method__}:#{e.inspect} #{$ERROR_POSITION}")
827
824
  ensure
828
825
  end
829
826
  end
@@ -840,11 +837,11 @@ module Roma
840
837
  @log.error("Can not start cachecleaning process. stat = #{st.dbs[dn]}")
841
838
  return true
842
839
  end
843
- t = Thread::new do
840
+ t = Thread.new do
844
841
  begin
845
842
  storage_cachecleaning_process(hname, dn)
846
- rescue =>e
847
- @log.error("#{__method__}:#{e.inspect} #{$@}")
843
+ rescue => e
844
+ @log.error("#{__method__}:#{e.inspect} #{$ERROR_POSITION}")
848
845
  ensure
849
846
  end
850
847
  end
@@ -861,7 +858,7 @@ module Roma
861
858
  loop do
862
859
  # get keys in a cache up to 100 kyes
863
860
  keys = st.get_keys_in_cache(dn)
864
- break if keys == nil || keys.length == 0
861
+ break if keys.nil? || keys.length == 0
865
862
  break unless @do_storage_cachecleaning_process
866
863
 
867
864
  # @log.debug("#{__method__}:#{keys.length} keys found")
@@ -884,7 +881,7 @@ module Roma
884
881
  if @do_storage_cachecleaning_process == false
885
882
  @log.warn("#{__method__}:uncompleted")
886
883
  else
887
- st.set_db_stat(dn,:normal)
884
+ st.set_db_stat(dn, :normal)
888
885
  end
889
886
  @log.debug("#{__method__}:#{count} keys loaded.")
890
887
  @log.debug("#{__method__}:#{rcount} keys rejected.") if rcount > 0
@@ -894,11 +891,11 @@ module Roma
894
891
 
895
892
  def asyncev_start_get_routing_event(args)
896
893
  @log.debug("#{__method__} #{args}")
897
- t = Thread::new do
894
+ t = Thread.new do
898
895
  begin
899
896
  get_routing_event
900
897
  rescue => e
901
- @log.error("#{__method__}:#{e.inspect} #{$@}")
898
+ @log.error("#{__method__}:#{e.inspect} #{$ERROR_POSITION}")
902
899
  ensure
903
900
  end
904
901
  end
@@ -911,27 +908,27 @@ module Roma
911
908
  routing_path = Config::RTTABLE_PATH
912
909
  f_list = Dir.glob("#{routing_path}/#{@stats.ap_str}*")
913
910
 
914
- f_list.each{|fname|
915
- IO.foreach(fname){|line|
911
+ f_list.each do|fname|
912
+ IO.foreach(fname)do|line|
916
913
  if line =~ /join|leave/
917
914
  @rttable.event.shift if @rttable.event.size >= @rttable.event_limit_line
918
- @rttable.event << line.chomp
915
+ @rttable.event << line.chomp
919
916
  end
920
- }
921
- }
917
+ end
918
+ end
922
919
 
923
920
  @log.info("#{__method__} has done.")
924
- rescue =>e
925
- @log.error("#{e}\n#{$@}")
921
+ rescue => e
922
+ @log.error("#{e}\n#{$ERROR_POSITION}")
926
923
  end
927
924
 
928
925
  def asyncev_start_get_logs(args)
929
926
  @log.debug("#{__method__} #{args}")
930
- t = Thread::new do
927
+ t = Thread.new do
931
928
  begin
932
929
  get_logs(args)
933
930
  rescue => e
934
- @log.error("#{__method__}:#{e.inspect} #{$@}")
931
+ @log.error("#{__method__}:#{e.inspect} #{$ERROR_POSITION}")
935
932
  ensure
936
933
  @stats.gui_run_gather_logs = false
937
934
  end
@@ -946,7 +943,7 @@ module Roma
946
943
  log_file = "#{log_path}/#{@stats.ap_str}.log"
947
944
 
948
945
  target_logs = []
949
- File.open(log_file){|f|
946
+ File.open(log_file)do|f|
950
947
  start_point = get_point(f, args[0], 'start')
951
948
  end_point = get_point(f, args[1], 'end')
952
949
 
@@ -955,26 +952,26 @@ module Roma
955
952
  target_logs = f.read(end_point - start_point)
956
953
  target_logs = target_logs.each_line.map(&:chomp)
957
954
  target_logs.delete('.')
958
- }
955
+ end
959
956
 
960
957
  @rttable.logs = target_logs
961
958
  # set gathered date for expiration
962
959
  @rttable.logs.unshift(Time.now)
963
960
 
964
961
  @log.debug("#{__method__} has done.")
965
- rescue =>e
962
+ rescue => e
966
963
  @rttable.logs = []
967
- @log.error("#{e}\n#{$@}")
964
+ @log.error("#{e}\n#{$ERROR_POSITION}")
968
965
  ensure
969
966
  @stats.gui_run_gather_logs = false
970
967
  end
971
968
 
972
- def get_point(f, target_time, type, latency_time=Time.now, current_pos=0, new_pos=f.size/2)
969
+ def get_point(f, target_time, type, latency_time = Time.now, current_pos = 0, new_pos = f.size / 2)
973
970
  # hilatency check
974
- ps = Time.now - latency_time
971
+ ps = Time.now - latency_time
975
972
  if ps > 5
976
- @log.warn("gather_logs process was failed.")
977
- raise
973
+ @log.warn('gather_logs process was failed.')
974
+ fail
978
975
  end
979
976
 
980
977
  # initialize read size
@@ -986,33 +983,33 @@ module Roma
986
983
  return f.size if target_time == 'current'
987
984
 
988
985
  target_time =~ (/(\d+)-(\d+)-(\d+)T(\d+):(\d+):(\d+)/)
989
- target_time = Time.mktime($1, $2, $3, $4, $5, $6, 000000)
990
-
986
+ target_time = Time.mktime(Regexp.last_match[1], Regexp.last_match[2], Regexp.last_match[3], Regexp.last_match[4], Regexp.last_match[5], Regexp.last_match[6], 000000)
987
+
991
988
  # check outrange or not
992
989
  f.seek(0, IO::SEEK_SET)
993
990
  begining_log = f.read(read_size)
994
991
  pos = begining_log.index(/[IDEW],\s\[(\d+)-(\d+)-(\d+)T(\d+):(\d+):(\d+)\.(\d+)/)
995
- begining_time = Time.mktime($1, $2, $3, $4, $5, $6, $7)
992
+ begining_time = Time.mktime(Regexp.last_match[1], Regexp.last_match[2], Regexp.last_match[3], Regexp.last_match[4], Regexp.last_match[5], Regexp.last_match[6], Regexp.last_match[7])
996
993
 
997
994
  f.seek(-read_size, IO::SEEK_END)
998
995
  end_log = f.read(read_size)
999
996
  pos = end_log.rindex(/[IDEW],\s\[(\d+)-(\d+)-(\d+)T(\d+):(\d+):(\d+)\.(\d+)/)
1000
- end_time = Time.mktime($1, $2, $3, $4, $5, $6, $7)
997
+ end_time = Time.mktime(Regexp.last_match[1], Regexp.last_match[2], Regexp.last_match[3], Regexp.last_match[4], Regexp.last_match[5], Regexp.last_match[6], Regexp.last_match[7])
1001
998
 
1002
999
  case type
1003
1000
  when 'start'
1004
1001
  if target_time < begining_time
1005
1002
  return 0
1006
1003
  elsif target_time > end_time
1007
- @log.error("irregular time was set.")
1008
- raise
1004
+ @log.error('irregular time was set.')
1005
+ fail
1009
1006
  end
1010
1007
  when 'end'
1011
1008
  if target_time > end_time
1012
1009
  return f.size
1013
1010
  elsif target_time < begining_time
1014
- @log.error("irregular time was set.")
1015
- raise
1011
+ @log.error('irregular time was set.')
1012
+ fail
1016
1013
  end
1017
1014
  end
1018
1015
  end
@@ -1024,20 +1021,20 @@ module Roma
1024
1021
  date_a = sector_log.scan(/[IDEW],\s\[(\d+)-(\d+)-(\d+)T(\d+):(\d+):(\d+)\.(\d+)/)
1025
1022
 
1026
1023
  time_a = []
1027
- date_a.each{|time|
1024
+ date_a.each do|time|
1028
1025
  time_a.push(Time.mktime(time[0], time[1], time[2], time[3], time[4], time[5], time[6]))
1029
- }
1026
+ end
1030
1027
  sector_time_first = time_a[0]
1031
1028
  sector_time_last = time_a[-1]
1032
-
1029
+
1033
1030
  if target_time.between?(sector_time_first, sector_time_last)
1034
- time_a.each{|time|
1031
+ time_a.each do|time|
1035
1032
  if target_time <= time
1036
- time_string = time.strftime("%Y-%m-%dT%H:%M:%S")
1033
+ time_string = time.strftime('%Y-%m-%dT%H:%M:%S')
1037
1034
  target_index = sector_log.index(/[IDEW],\s\[#{time_string}/)
1038
1035
  return new_pos + target_index
1039
- end
1040
- }
1036
+ end
1037
+ end
1041
1038
  elsif sector_time_first > target_time
1042
1039
  target_pos = new_pos - ((new_pos - current_pos).abs / 2)
1043
1040
  elsif sector_time_first < target_time
@@ -1046,7 +1043,5 @@ module Roma
1046
1043
 
1047
1044
  get_point(f, target_time, type, latency_time, new_pos, target_pos)
1048
1045
  end
1049
-
1050
1046
  end # module AsyncProcess
1051
-
1052
1047
  end # module Roma