roma 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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