roma 0.8.12 → 0.8.13p1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. data/CHANGELOG +34 -1
  2. data/Gemfile +17 -0
  3. data/Rakefile +2 -3
  4. data/ruby/server/lib/roma/async_process.rb +158 -20
  5. data/ruby/server/lib/roma/command/bg_command_receiver.rb +3 -4
  6. data/ruby/server/lib/roma/command/rt_command_receiver.rb +133 -5
  7. data/ruby/server/lib/roma/command/sys_command_receiver.rb +353 -0
  8. data/ruby/server/lib/roma/command/vn_command_receiver.rb +9 -3
  9. data/ruby/server/lib/roma/config.rb +6 -0
  10. data/ruby/server/lib/roma/dns_cache.rb +40 -0
  11. data/ruby/server/lib/roma/event/con_pool.rb +3 -1
  12. data/ruby/server/lib/roma/event/handler.rb +18 -3
  13. data/ruby/server/lib/roma/messaging/con_pool.rb +3 -1
  14. data/ruby/server/lib/roma/romad.rb +19 -3
  15. data/ruby/server/lib/roma/routing/cb_rttable.rb +22 -1
  16. data/ruby/server/lib/roma/routing/random_balancer.rb +76 -0
  17. data/ruby/server/lib/roma/routing/routing_data.rb +16 -2
  18. data/ruby/server/lib/roma/routing/rttable.rb +55 -8
  19. data/ruby/server/lib/roma/stats.rb +32 -0
  20. data/ruby/server/lib/roma/storage/sqlite3_storage.rb +9 -3
  21. data/ruby/server/lib/roma/tools/mkconfig.rb +135 -73
  22. data/ruby/server/lib/roma/tools/mkrecent.rb +3 -4
  23. data/ruby/server/lib/roma/tools/mkroute.rb +6 -7
  24. data/ruby/server/lib/roma/tools/multi_commander.rb +3 -4
  25. data/ruby/server/lib/roma/tools/recoverlost.rb +0 -1
  26. data/ruby/server/lib/roma/tools/recoverlost_alist.rb +0 -1
  27. data/ruby/server/lib/roma/tools/recoverlost_lib.rb +10 -11
  28. data/ruby/server/lib/roma/tools/roma_watcher.rb +0 -1
  29. data/ruby/server/lib/roma/tools/sample_watcher.rb +3 -4
  30. data/ruby/server/lib/roma/tools/sample_watcher2.rb +3 -4
  31. data/ruby/server/lib/roma/tools/sample_watcher3.rb +0 -1
  32. data/ruby/server/lib/roma/tools/simple_bench.rb +3 -3
  33. data/ruby/server/lib/roma/tools/simple_bench2.rb +1 -2
  34. data/ruby/server/lib/roma/tools/ssroute.rb +0 -1
  35. data/ruby/server/lib/roma/tools/tribunus.rb +5 -6
  36. data/ruby/server/lib/roma/version.rb +1 -1
  37. data/ruby/server/lib/roma/write_behind.rb +4 -1
  38. data/ruby/server/test/rcirb.rb +0 -1
  39. data/ruby/server/test/t_cpdata.rb +8 -9
  40. data/ruby/server/test/t_rclient.rb +1 -2
  41. data/ruby/server/test/t_routing_data.rb +13 -14
  42. data/ruby/server/test/t_storage.rb +1 -1
  43. data/ruby/server/test/t_writebehind.rb +29 -30
  44. metadata +25 -24
@@ -18,7 +18,7 @@ Thread.new do
18
18
  end
19
19
  end
20
20
 
21
- def random_rquest_sender(ini_nodes, n)
21
+ def random_request_sender(ini_nodes, n)
22
22
  puts __method__
23
23
  rc=Roma::Client::RomaClient.new(ini_nodes)
24
24
 
@@ -80,7 +80,7 @@ opts.banner = "usage:#{File.basename($0)} [options] addr:port"
80
80
  opts.on("-s", "--set", "set request"){|v| param[:set] = v }
81
81
  opts.on("-g", "--get", "get request"){|v| param[:get] = v }
82
82
  opts.on("-r", "--rand", "random request"){|v| param[:rand] = v }
83
- opts.on("-n", "--num [num]", "number of kyes"){|v| param[:num] = v.to_i }
83
+ opts.on("-n", "--num [num]", "number of keys"){|v| param[:num] = v.to_i }
84
84
  opts.on("-t", "--threads [num]", "number of threads"){|v| param[:th] = v.to_i }
85
85
  opts.parse!(ARGV)
86
86
 
@@ -99,7 +99,7 @@ param[:th].times do |i|
99
99
  t << Thread.new do
100
100
  get_sequence(ARGV, param[:num]) if param.key?(:get)
101
101
  set_sequence(ARGV, param[:num]) if param.key?(:set)
102
- random_rquest_sender(ARGV, param[:num]) if param.key?(:rand)
102
+ random_request_sender(ARGV, param[:num]) if param.key?(:rand)
103
103
  end
104
104
  end
105
105
 
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
2
  require 'date'
4
3
  require 'roma/client/rclient'
5
4
 
@@ -52,7 +51,7 @@ module Roma
52
51
  end
53
52
 
54
53
 
55
- def random_rquest_sender(ini_nodes)
54
+ def random_request_sender(ini_nodes)
56
55
  rc=Roma::Client::RomaClient.new(ini_nodes)
57
56
 
58
57
  n=10000
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
2
  #
4
3
  # usage:ssroute address_port
5
4
  #
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/ruby
2
- # encoding: utf-8
3
2
  require 'socket'
4
3
  require 'ipaddr'
5
4
  require 'optparse'
@@ -46,7 +45,7 @@ class Tribunus
46
45
  @remote_servers={} #ipaddr => RomadHost
47
46
 
48
47
  end
49
-
48
+
50
49
  def from_remote?(ipaddr)
51
50
  from_remote= !Socket.ip_address_list.any?{|addr|addr.ip_address==ipaddr}
52
51
  end
@@ -67,7 +66,7 @@ class Tribunus
67
66
  if(Process.waitpid2(pid)[1].to_i!=0)
68
67
  raise "failed to make route"
69
68
  end
70
-
69
+
71
70
  @local_romad_host.ports.each do|port|
72
71
  pid=Process.spawn(@ruby_command_name,*RUBY_COMMAND_OPTIONS,ROMAD_PATH,*ROMAD_OPTIONS,"-p",port.to_s,@local_romad_host.hostname, :chdir=>@romad_work_dir)
73
72
  @romads[port]=pid
@@ -163,7 +162,7 @@ class Tribunus
163
162
  end
164
163
 
165
164
 
166
-
165
+
167
166
 
168
167
  sleep(HEARTBEAT_LOOP_INTERVAL)
169
168
  end
@@ -288,10 +287,10 @@ if ports.size >100
288
287
  end
289
288
 
290
289
  tri=Tribunus.new(hostname,ports,conf)
291
- case conf[:mode]
290
+ case conf[:mode]
292
291
  when:new_ring
293
292
  tri.start_new_ring
294
- when :join
293
+ when :join
295
294
  tri.start_join(conf[:joining_node][0],conf[:joining_node][1])
296
295
  else
297
296
  tri.start_discover
@@ -1,4 +1,4 @@
1
1
 
2
2
  module Roma
3
- VERSION = "0.8.12"
3
+ VERSION = "0.8.13-p1"
4
4
  end
@@ -7,6 +7,8 @@ module Roma
7
7
 
8
8
  class FileWriter
9
9
 
10
+ attr_accessor :shift_size
11
+
10
12
  def initialize(path, shift_size, log)
11
13
  @stats = Roma::Stats.instance
12
14
  path.chop! if path[-1]=='/'
@@ -43,6 +45,7 @@ module Roma
43
45
  fd = @fdh[hname]
44
46
  unless fd
45
47
  fd = openfile(hname)
48
+ @log.info("WriteBehind file has been created: [#{@fnh[hname]}]")
46
49
  @total_size[hname] = 0
47
50
  end
48
51
  klen = key.length
@@ -66,7 +69,7 @@ module Roma
66
69
  @fnh.delete(hname)
67
70
  sleep 0.01 while @do_write
68
71
  fd_old.close
69
- @log.info("WriteBehind:rotate sccseed")
72
+ @log.info("WriteBehind:rotate succeed")
70
73
  true
71
74
  end
72
75
 
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
2
 
4
3
  require 'pp'
5
4
  require 'irb'
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
2
 
4
3
  require 'roma/client/rclient'
5
4
  require 'roma/messaging/con_pool'
@@ -83,7 +82,7 @@ rescue =>e
83
82
  false
84
83
  end
85
84
 
86
- # vnode をコピーするテスト
85
+ # test of copying vnode
87
86
  class CopyDataTest < Test::Unit::TestCase
88
87
  include RomaTestUtils
89
88
 
@@ -98,10 +97,10 @@ class CopyDataTest < Test::Unit::TestCase
98
97
  @th.kill
99
98
  $gs.close
100
99
  Roma::Messaging::ConPool::instance.close_all
101
- end
100
+ end
102
101
 
103
102
  def test_spushv
104
- # vn = 0 のキー
103
+ # key wihch's vn = 0
105
104
  keys = []
106
105
  n = 1000
107
106
  n.times{|i|
@@ -124,7 +123,7 @@ class CopyDataTest < Test::Unit::TestCase
124
123
  def push_a_vnode_stream(hname, vn, nid, keys)
125
124
  con = Roma::Messaging::ConPool.instance.get_connection(nid)
126
125
  con.write("spushv #{hname} #{vn}\r\n")
127
-
126
+
128
127
  res = con.gets # READY\r\n or error string
129
128
  if res != "READY\r\n"
130
129
  con.close
@@ -137,7 +136,7 @@ class CopyDataTest < Test::Unit::TestCase
137
136
  con.write(data)
138
137
  }
139
138
  con.write("\0"*20) # end of steram
140
-
139
+
141
140
  res = con.gets # STORED\r\n or error string
142
141
  Roma::Messaging::ConPool.instance.return_connection(nid,con)
143
142
  res.chomp! if res
@@ -155,7 +154,7 @@ class CopyDataTest < Test::Unit::TestCase
155
154
  dat[0] = reqpushv('roma',0)
156
155
  assert_not_nil( dat[0] )
157
156
  dat[0] = reqpushv('roma',0)
158
- assert_not_nil( dat[0] ) # 同じ vnode を2度アクセスしても良いことを確認
157
+ assert_not_nil( dat[0] ) # confirming twice access to same node
159
158
 
160
159
  dat[1] = reqpushv('roma',536870912)
161
160
  assert_not_nil( dat[1] )
@@ -184,7 +183,7 @@ class CopyDataTest < Test::Unit::TestCase
184
183
  $dat[vn]
185
184
  end
186
185
 
187
- # n 個の dummy data set
186
+ # set dummy data of n count
188
187
  def make_dummy(n)
189
188
  n.times{|i|
190
189
  assert( @rc.set(i.to_s,i.to_s)=="STORED" )
@@ -230,5 +229,5 @@ class CopyDataTest < Test::Unit::TestCase
230
229
  @log.error("#{e}\n#{$@}")
231
230
  false
232
231
  end
233
-
232
+
234
233
  end
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
2
 
4
3
  require 'roma/client/rclient'
5
4
  require 'roma/messaging/con_pool'
@@ -194,6 +193,6 @@ class RClientTestForceForward < RClientTest
194
193
  @rd.v_idx[d & @search_mask][1]
195
194
  end
196
195
  }
197
- end
196
+ end
198
197
 
199
198
  end
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
2
 
4
3
  require 'roma/routing/routing_data'
5
4
  require 'yaml'
@@ -15,7 +14,7 @@ class RoutingDataTest < Test::Unit::TestCase
15
14
  GC.start
16
15
  n=0
17
16
  ObjectSpace.each_object{|o| n+=1 }
18
- n
17
+ n
19
18
  end
20
19
 
21
20
  def test_object_count
@@ -64,12 +63,12 @@ class RoutingDataTest < Test::Unit::TestCase
64
63
  end
65
64
 
66
65
  def test_create
67
- # ダイジェストの総ビット数 32
68
- # バーチャルノードのビット数 8
69
- # 冗長度 1
70
- # ノードIDの配列 [roma0_3300]
66
+ # digest bit count 32
67
+ # vn bit count 8
68
+ # redundancy 1
69
+ # array of node ID [roma0_3300]
71
70
  rd=Roma::Routing::RoutingData.create(32,8,1,['roma0_3300'])
72
-
71
+
73
72
  assert( rd.v_idx.length==256 )
74
73
  assert( rd.nodes.length==1 )
75
74
  assert( rd.search_mask==0xff000000 )
@@ -77,10 +76,10 @@ class RoutingDataTest < Test::Unit::TestCase
77
76
  assert( rd.div_bits==8 )
78
77
  assert( rd.rn==1 )
79
78
 
80
- # ダイジェストの総ビット数 32
81
- # バーチャルノードのビット数 16
82
- # 冗長度 2
83
- # ノードIDの配列 ['roma0_3300','roma1_3300','roma2_3300']
79
+ # digest bit count 32
80
+ # vn bit count 16
81
+ # redundancy 2
82
+ # array of node ID ['roma0_3300','roma1_3300','roma2_3300']
84
83
  rd=Roma::Routing::RoutingData.create(32,16,2,['roma0_3300','roma1_3300','roma2_3300'])
85
84
 
86
85
  assert( rd.v_idx.length==65536 )
@@ -101,14 +100,14 @@ class RoutingDataTest < Test::Unit::TestCase
101
100
  c2+=1
102
101
  end
103
102
  }
104
- # バラつきは10%より小さいでしょ
103
+ # confirming dispersion is lower than 10%
105
104
  assert( (c0-c1).abs < rd.v_idx.length/10 )
106
105
  assert( (c1-c2).abs < rd.v_idx.length/10 )
107
106
  end
108
107
 
109
108
  def test_dump_binary
110
109
  rd=Roma::Routing::RoutingData.create(32,9,2,['roma0_3300','roma1_3300'])
111
- # set to a bummy clock
110
+ # set to a bummy clock
112
111
  (2**rd.div_bits).times{|i|
113
112
  vn=i<<(rd.dgst_bits-rd.div_bits)
114
113
  rd.v_clk[vn] = i
@@ -151,7 +150,7 @@ class RoutingDataTest < Test::Unit::TestCase
151
150
 
152
151
  def test_dump_binary2
153
152
  rd=Roma::Routing::RoutingData.create(32,9,2,['roma0_3300','roma1_3300'])
154
- # set to a bummy clock
153
+ # set to a bummy clock
155
154
  (2**rd.div_bits).times{|i|
156
155
  vn=i<<(rd.dgst_bits-rd.div_bits)
157
156
  rd.v_clk[vn] = i
@@ -304,7 +304,7 @@ class TCStorageTest < Test::Unit::TestCase
304
304
  n.times{|i|
305
305
  @st.set(3,"key3-#{i}",0,Time.now.to_i-100,"val3-#{i}")
306
306
  }
307
- # 10 kyes deleted
307
+ # 10 keys deleted
308
308
  cnt=0
309
309
  @st.each_clean_up(Time.now.to_i-100,vnhash){|k,vn|
310
310
  assert_equal(3, vn)
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
2
  require 'logger'
4
3
  require 'stringio'
5
4
  require 'roma/write_behind'
@@ -9,7 +8,7 @@ require 'roma/client/plugin/alist'
9
8
  require 'roma/client/plugin/map'
10
9
 
11
10
  class FileWriterTest < Test::Unit::TestCase
12
-
11
+
13
12
  def initialize(arg)
14
13
  super(arg)
15
14
  end
@@ -24,7 +23,7 @@ class FileWriterTest < Test::Unit::TestCase
24
23
  system('rm -rf wb_test')
25
24
  end
26
25
 
27
- # 作成と write のテスト
26
+ # making and writing test
28
27
  def test_wb_write
29
28
  system('rm -rf wb_test')
30
29
  fw = Roma::WriteBehind::FileWriter.new("wb_test", 1024 * 1024, Logger.new(nil))
@@ -55,7 +54,7 @@ class FileWriterTest < Test::Unit::TestCase
55
54
  assert_equal(1,wb1.length )
56
55
  end
57
56
 
58
- # サイズによるローテーションのテスト
57
+ # rotation test per data
59
58
  def test_wb_rotation
60
59
  system('rm -rf wb_test')
61
60
  fw = Roma::WriteBehind::FileWriter.new("wb_test", 900, Logger.new(nil))
@@ -74,56 +73,56 @@ class FileWriterTest < Test::Unit::TestCase
74
73
  assert(!File.exist?("#{path}/4.wb"))
75
74
  end
76
75
 
77
- # 時間によるローテーションのテスト
76
+ # rotation test per time
78
77
  def test_rotation2
79
78
  system('rm -rf wb_test')
80
79
  fw = Roma::WriteBehind::FileWriter.new("wb_test", 1024 * 1024, Logger.new(nil))
81
80
  path = "wb_test/roma0_11211/roma/#{Time.now.strftime('%Y%m%d')}/"
82
81
 
83
- # インスタンス生成直後の rottime の時分秒usecは何かの値を持っている
82
+ # rottime's usec have some value,from instance was created
84
83
  rt = fw.instance_eval{ @rottime }
85
84
  assert_not_equal(0, rt.hour + rt.min + rt.sec+ rt.usec)
86
- # 初期化は今日の日付で行われる
85
+ # formatting execute in today's date
87
86
  assert_equal(Time.now.day, rt.day)
88
- # ファイルは存在しない
87
+ # confirming the file do not exist
89
88
  assert(!File.exist?("#{path}/0.wb"))
90
89
  fw.write('roma',1,"key","val")
91
- # 何かを書き込むとオープンされ、そのタイミングで rottime が更新される
90
+ # Open when somenthing to write,and in same timing rottime is updated
92
91
  rt = fw.instance_eval{ @rottime }
93
- # この時、日付以下は 0 となる
92
+ # In this time, under of date become "0"
94
93
  assert_equal(0, rt.hour + rt.min + rt.sec+ rt.usec)
95
- # 日付は明日になる
94
+ # date become tomorrow
96
95
  assert_not_equal(Time.now.day, rt.day)
97
96
  10.times{|i|
98
97
  fw.write('roma',i,"key-#{i}","val-#{i}")
99
98
  }
100
- # ファイルは1
99
+ # confirming file is only 1 not over 2
101
100
  assert(File.exist?("#{path}/0.wb"))
102
101
  assert(!File.exist?("#{path}/1.wb"))
103
-
104
- # ローテーションの時刻を強制的に今にする
102
+
103
+ # set rottime to now forcibly
105
104
  fw.instance_eval{ @rottime=Time.now }
106
- # rottime の変更を確認
105
+ # confriming to change rottime
107
106
  assert_not_equal(rt, fw.instance_eval{ @rottime })
108
- # 何かを書き込むとローテーションが発生する
107
+ # When something write, rotation is occured
109
108
  fw.write('roma',1,"key","val")
110
109
  assert(File.exist?("#{path}/1.wb"))
111
- # テストは日をまたがないので rottime は元に戻る
110
+ # rottime turn back because of test shold not step over the day.
112
111
  assert_equal(rt, fw.instance_eval{ @rottime })
113
112
  end
114
113
 
115
- # 外部からローテーションするテスト
114
+ # rotation test from outside
116
115
  def test_wb_rotation3
117
116
  system('rm -rf wb_test')
118
117
  fw = Roma::WriteBehind::FileWriter.new("wb_test", 1024 * 1024, Logger.new(nil))
119
118
  path = "wb_test/roma0_11211/roma/#{Time.now.strftime('%Y%m%d')}/"
120
119
 
121
- # ファイルはない
120
+ # confirming file don't exist
122
121
  assert(!File.exist?("#{path}/0.wb"))
123
122
  10.times{|i|
124
123
  fw.write('roma',i,"key-#{i}","val-#{i}")
125
124
  }
126
- # ファイルは1
125
+ # confirming file is only 1 not over 2
127
126
  assert(File.exist?("#{path}/0.wb"))
128
127
  assert(!File.exist?("#{path}/1.wb"))
129
128
 
@@ -131,23 +130,23 @@ class FileWriterTest < Test::Unit::TestCase
131
130
  10.times{|i|
132
131
  fw.write('roma',i,"key-#{i}","val-#{i}")
133
132
  }
134
- # ファイルは2
133
+ # confirming files are 2 not over 3
135
134
  assert(File.exist?("#{path}/0.wb"))
136
135
  assert(File.exist?("#{path}/1.wb"))
137
136
  assert(!File.exist?("#{path}/2.wb"))
138
137
 
139
- # ローテーションの重複呼び出し
138
+ # test of do rotation continuously
140
139
  fw.rotate('roma')
141
140
  fw.rotate('roma')
142
141
  fw.rotate('roma')
143
- # ファイルは2つで変化なし
142
+ # confimring file's count are still 2 (not changing).
144
143
  assert(File.exist?("#{path}/0.wb"))
145
144
  assert(File.exist?("#{path}/1.wb"))
146
145
  assert(!File.exist?("#{path}/2.wb"))
147
146
  10.times{|i|
148
147
  fw.write('roma',i,"key-#{i}","val-#{i}")
149
148
  }
150
- # ファイルは3
149
+ # confirming files are 3 not over 4
151
150
  assert(File.exist?("#{path}/0.wb"))
152
151
  assert(File.exist?("#{path}/1.wb"))
153
152
  assert(File.exist?("#{path}/2.wb"))
@@ -162,7 +161,7 @@ class FileWriterTest < Test::Unit::TestCase
162
161
  assert_nil( fw.get_current_file_path('roma') )
163
162
 
164
163
  fw.write('roma',0,"key","val")
165
-
164
+
166
165
  path = File.expand_path("./wb_test/roma0_11211/roma/#{Time.now.strftime('%Y%m%d')}/")
167
166
  assert_equal( File.join(path,"0.wb"), fw.get_current_file_path('roma'))
168
167
 
@@ -232,7 +231,7 @@ class WriteBehindTest < FileWriterTest
232
231
  send_cmd("localhost_11211", "wb_command_map {:set=>1}")
233
232
  assert_equal("STORED", @rc.set("abc","value abc",0,true))
234
233
  send_cmd("localhost_11211", "writebehind_rotate roma")
235
-
234
+
236
235
  wb0 = read_wb("#{wb_path}/0.wb")
237
236
  assert_equal(1, wb0.length)
238
237
  wb0.each do |last, cmd, key, val|
@@ -259,8 +258,8 @@ class WriteBehindTest < FileWriterTest
259
258
  assert_equal(128, @rc.decr("abc"))
260
259
  ## test for set_expt TODO
261
260
  send_cmd("localhost_11211", "writebehind_rotate roma")
262
-
263
-
261
+
262
+
264
263
  res = {1=>'1',2=>'1',3=>'1',4=>'2',5=>'23',6=>'123',7=>'128',8=>'129',9=>'128'}
265
264
  wb0 = read_wb("#{wb_path}/0.wb")
266
265
  assert_equal(9, wb0.length)
@@ -307,7 +306,7 @@ class WriteBehindTest < FileWriterTest
307
306
  assert_equal('DELETED', @rc.alist_delete_at("abc",1)) #['13','5','4','2','1','8','9','10','12']
308
307
  assert_equal('CLEARED', @rc.alist_clear("abc"))
309
308
  send_cmd("localhost_11211", "writebehind_rotate roma")
310
-
309
+
311
310
  res = {
312
311
  10=>'1',4=>'2',5=>'3',6=>'4',7=>'5',8=>'6',9=>'7',11=>'8',12=>'9',
313
312
  13=>'10',14=>'11',15=>'12',16=>'13',2=>'3',3=>'6',
@@ -336,7 +335,7 @@ class WriteBehindTest < FileWriterTest
336
335
  assert_equal('STORED', @rc.map_set('abc','mapkey1','value1'))
337
336
  assert_equal('CLEARED', @rc.map_clear("abc"))
338
337
  send_cmd("localhost_11211", "writebehind_rotate roma")
339
-
338
+
340
339
  res = {1=>'value1',2=>{},3=>{}}
341
340
  wb0 = read_wb("#{wb_path}/0.wb")
342
341
  assert_equal(4, wb0.length)
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roma
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.12
5
- prerelease:
4
+ version: 0.8.13p1
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Junji Torii
@@ -10,14 +10,14 @@ authors:
10
10
  autorequire:
11
11
  bindir: ruby/server/bin
12
12
  cert_chain: []
13
- date: 2013-02-12 00:00:00.000000000 Z
13
+ date: 2014-01-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: eventmachine
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
- - - '>='
20
+ - - ! '>='
21
21
  - !ruby/object:Gem::Version
22
22
  version: '0'
23
23
  type: :runtime
@@ -25,37 +25,39 @@ dependencies:
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  none: false
27
27
  requirements:
28
- - - '>='
28
+ - - ! '>='
29
29
  - !ruby/object:Gem::Version
30
30
  version: '0'
31
- description: |2
32
- ROMA server
31
+ description: ! ' ROMA server
32
+
33
+ '
33
34
  email:
34
35
  executables:
35
- - multi_commander
36
- - mkroute
36
+ - recoverlost
37
37
  - chg_redundancy
38
- - recoverlost_alist_all
39
- - ssroute
38
+ - mkroute
39
+ - simple_bench
40
+ - romad
40
41
  - recoverlost_alist
42
+ - ssroute
43
+ - mkconfig
41
44
  - roma_watcher
42
- - recoverlost
43
- - romad
44
- - key_list
45
- - key_access
46
- - recoverlost_alist_keys
47
45
  - mkrecent
48
- - mkconfig
49
46
  - log_merger
50
47
  - tribunus
51
- - simple_bench
48
+ - key_list
52
49
  - test-scenario
50
+ - recoverlost_alist_keys
51
+ - key_access
52
+ - multi_commander
53
+ - recoverlost_alist_all
53
54
  extensions: []
54
55
  extra_rdoc_files:
55
56
  - README
56
57
  - CHANGELOG
57
58
  files:
58
59
  - CHANGELOG
60
+ - Gemfile
59
61
  - LICENSE
60
62
  - README
61
63
  - Rakefile
@@ -91,6 +93,7 @@ files:
91
93
  - ruby/server/lib/roma/command/vn_command_receiver.rb
92
94
  - ruby/server/lib/roma/command_plugin.rb
93
95
  - ruby/server/lib/roma/config.rb
96
+ - ruby/server/lib/roma/dns_cache.rb
94
97
  - ruby/server/lib/roma/event/con_pool.rb
95
98
  - ruby/server/lib/roma/event/handler.rb
96
99
  - ruby/server/lib/roma/logging/rlogger.rb
@@ -105,6 +108,7 @@ files:
105
108
  - ruby/server/lib/roma/romad.rb
106
109
  - ruby/server/lib/roma/routing/cb_rttable.rb
107
110
  - ruby/server/lib/roma/routing/merkle_tree.rb
111
+ - ruby/server/lib/roma/routing/random_balancer.rb
108
112
  - ruby/server/lib/roma/routing/random_partitioner.rb
109
113
  - ruby/server/lib/roma/routing/routing_data.rb
110
114
  - ruby/server/lib/roma/routing/rttable.rb
@@ -174,18 +178,15 @@ require_paths:
174
178
  required_ruby_version: !ruby/object:Gem::Requirement
175
179
  none: false
176
180
  requirements:
177
- - - '>='
181
+ - - ! '>='
178
182
  - !ruby/object:Gem::Version
179
183
  version: '0'
180
- segments:
181
- - 0
182
- hash: 1424416730039994284
183
184
  required_rubygems_version: !ruby/object:Gem::Requirement
184
185
  none: false
185
186
  requirements:
186
- - - '>='
187
+ - - ! '>'
187
188
  - !ruby/object:Gem::Version
188
- version: '0'
189
+ version: 1.3.1
189
190
  requirements: []
190
191
  rubyforge_project:
191
192
  rubygems_version: 1.8.25