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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roma
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Junji Torii
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-03-30 00:00:00.000000000 Z
13
+ date: 2015-08-19 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: eventmachine
@@ -27,19 +27,19 @@ dependencies:
27
27
  - !ruby/object:Gem::Version
28
28
  version: 1.0.0
29
29
  - !ruby/object:Gem::Dependency
30
- name: tokyocabinet
30
+ name: jaro_winkler
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
33
  - - "~>"
34
34
  - !ruby/object:Gem::Version
35
- version: 1.29.1
36
- type: :development
35
+ version: 1.3.5
36
+ type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - "~>"
41
41
  - !ruby/object:Gem::Version
42
- version: 1.29.1
42
+ version: 1.3.5
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: ffi
45
45
  requirement: !ruby/object:Gem::Requirement
@@ -132,12 +132,13 @@ executables:
132
132
  - cpdb
133
133
  - recoverlost_alist_all
134
134
  - log_merger
135
+ - check_tc_flag
135
136
  - ssroute
136
137
  - safecopy_test
137
138
  - mkconfig
138
139
  - safecopy_integration_test
140
+ - roma-adm
139
141
  - simple_bench
140
- - tc_data_restore.rb
141
142
  - mkrecent
142
143
  - recoverlost
143
144
  - mkroute
@@ -157,9 +158,11 @@ extra_rdoc_files:
157
158
  files:
158
159
  - CHANGELOG
159
160
  - Gemfile
161
+ - Gemfile.lock
160
162
  - LICENSE
161
163
  - README.md
162
164
  - Rakefile
165
+ - bin/check_tc_flag
163
166
  - bin/chg_redundancy
164
167
  - bin/cpdb
165
168
  - bin/key_access
@@ -173,6 +176,7 @@ files:
173
176
  - bin/recoverlost_alist
174
177
  - bin/recoverlost_alist_all
175
178
  - bin/recoverlost_alist_keys
179
+ - bin/roma-adm
176
180
  - bin/roma_watcher
177
181
  - bin/romad
178
182
  - bin/safecopy_integration_test
@@ -182,7 +186,6 @@ files:
182
186
  - bin/sample_watcher3
183
187
  - bin/simple_bench
184
188
  - bin/ssroute
185
- - bin/tc_data_restore.rb
186
189
  - bin/test-scenario
187
190
  - bin/tribunus
188
191
  - lib/roma/async_process.rb
@@ -199,6 +202,8 @@ files:
199
202
  - lib/roma/dns_cache.rb
200
203
  - lib/roma/event/con_pool.rb
201
204
  - lib/roma/event/handler.rb
205
+ - lib/roma/event/jaro_winkler.rb
206
+ - lib/roma/event/levenshtein.rb
202
207
  - lib/roma/logging/rlogger.rb
203
208
  - lib/roma/messaging/con_pool.rb
204
209
  - lib/roma/plugin/plugin_alist.rb
@@ -224,6 +229,7 @@ files:
224
229
  - lib/roma/storage/rh_storage.rb
225
230
  - lib/roma/storage/sqlite3_storage.rb
226
231
  - lib/roma/storage/tc_storage.rb
232
+ - lib/roma/tools/check_tc_flag.rb
227
233
  - lib/roma/tools/chg_redundancy.rb
228
234
  - lib/roma/tools/cpdb.rb
229
235
  - lib/roma/tools/key_access.rb
@@ -238,6 +244,7 @@ files:
238
244
  - lib/roma/tools/recoverlost_alist_all.rb
239
245
  - lib/roma/tools/recoverlost_alist_keys.rb
240
246
  - lib/roma/tools/recoverlost_lib.rb
247
+ - lib/roma/tools/roma-adm.rb
241
248
  - lib/roma/tools/roma_watcher.rb
242
249
  - lib/roma/tools/roma_watcher_config.yml.example
243
250
  - lib/roma/tools/safecopy_integration_test.rb
@@ -255,20 +262,30 @@ files:
255
262
  - test/config4mhash.rb
256
263
  - test/config4storage_error.rb
257
264
  - test/config4test.rb
265
+ - test/cpdbtest/config4cpdb_base.rb
266
+ - test/cpdbtest/config4cpdb_dbm.rb
267
+ - test/cpdbtest/config4cpdb_groonga.rb
268
+ - test/cpdbtest/config4cpdb_rh.rb
269
+ - test/cpdbtest/config4cpdb_sqlite3.rb
270
+ - test/cpdbtest/config4cpdb_tc.rb
271
+ - test/cpdbtest/config4cpdb_tcmem.rb
258
272
  - test/rcirb.rb
259
273
  - test/roma-test-utils.rb
260
274
  - test/run-test.rb
261
275
  - test/storage_error_storage.rb
262
276
  - test/t_command_definition.rb
263
277
  - test/t_cpdata.rb
278
+ - test/t_cpdb.rb
264
279
  - test/t_eventmachine.rb
265
280
  - test/t_listplugin.rb
281
+ - test/t_logshift.rb
266
282
  - test/t_mapcountplugin.rb
267
283
  - test/t_mapplugin.rb
268
284
  - test/t_mhash.rb
269
285
  - test/t_protocol.rb
270
286
  - test/t_rclient.rb
271
287
  - test/t_routing_data.rb
288
+ - test/t_routing_logic.rb
272
289
  - test/t_storage.rb
273
290
  - test/t_storage_error.rb
274
291
  - test/t_writebehind.rb
@@ -1,123 +0,0 @@
1
- require 'optparse'
2
- require 'tokyocabinet'
3
- require 'roma-client'
4
- #require 'roma/client/rclient'
5
-
6
- class TCRecover
7
- include TokyoCabinet
8
-
9
- def initialize(argv)
10
- @timeout = 5
11
- @data_path = nil
12
- @division_num = 10
13
- @wait_param = 0.001
14
-
15
- opts = OptionParser.new
16
- opts.banner = "usage:#{File.basename($0)} [options] address:port storage_path ..."
17
- opts.on("-n","--division [num]","(default=10)"){|v| @division_num = v.to_i }
18
- opts.on("-w","--wait [num]","(default=0.001)"){|v| @wait_param = v.to_i }
19
- opts.parse!(argv)
20
-
21
- if argv.length < 2
22
- STDERR.puts opts.help
23
- exit!
24
- end
25
-
26
- node = argv[0].sub(':','_')
27
-
28
- @rc = Roma::Client::RomaClient.new([node])
29
- @rttable = @rc.rttable
30
-
31
- @data_paths = argv[1..-1]
32
-
33
- @data_paths.each do |path|
34
- each_storage(path) do |tc|
35
- #p tc
36
- hdb = open_db(tc)
37
- start_recover(hdb)
38
- close_db(hdb)
39
- end
40
- end
41
- end
42
-
43
- def open_db(fname)
44
- hdb = HDB::new
45
- if !hdb.open(fname, HDB::OREADER | HDB::ONOLCK)
46
- ecode = hdb.ecode
47
- raise RuntimeError.new("tcdb open error #{hdb.errmsg(ecode)}")
48
- end
49
- hdb
50
- end
51
-
52
- def close_db(hdb)
53
- if !hdb.close
54
- ecode = hdb.ecode
55
- raise RuntimeError.new("tcdb close error #{hdb.errmsg(ecode)}")
56
- end
57
- end
58
-
59
- # [ 0.. 3] vn
60
- # [ 4.. 7] physical clock (unix time)
61
- # [ 8..11] logical clock
62
- # [12..15] exptime(unix time)
63
- # [16.. ] value data
64
- PACK_HEADER_TEMPLATE='NNNN'
65
- PACK_TEMPLATE=PACK_HEADER_TEMPLATE+'a*'
66
- def unpack_header(str)
67
- str.unpack(PACK_HEADER_TEMPLATE)
68
- end
69
- def unpack_data(str)
70
- str.unpack(PACK_TEMPLATE)
71
- end
72
-
73
- def get_raw(key)
74
- nid, d = @rttable.search_node(key)
75
- cmd = "eval @storages[\"roma\"].get_raw2(\"#{key}\")"
76
- timeout(@timeout){
77
- sender = @rc.instance_variable_get(:@sender)
78
- return sender.send_command(nid, cmd)
79
- }
80
- end
81
-
82
- def each_storage(path)
83
- Dir::glob("#{path}/*").each{|file|
84
- yield file if file =~ /\.tc/
85
- }
86
- end
87
-
88
- def cmp_clk(clk1, clk2)
89
- if (clk1-clk2).abs < 0x80000000 # 1<<31
90
- clk1 <=> clk2
91
- else
92
- clk2 <=> clk1
93
- end
94
- end
95
-
96
- def start_recover(hdb)
97
- hdb.each do |k, v|
98
- p k
99
- p v
100
- #p @rc.methods
101
-
102
- rv = @rc[k]
103
- p "#{k} : #{rv}"
104
- next if rv
105
-
106
- roma_raw_data = eval(get_raw(k))
107
- b_vn, b_t, b_clk, b_expt, b_v = unpack_data(v)
108
-
109
- if roma_raw_data
110
- r_vn, r_t, r_clk, r_expt, r_v = roma_raw_data
111
- if cmp_clk(r_clk, b_clk) <= 0
112
- @rc[k] = Marshal.load(b_v)
113
- print "."
114
- end
115
- else
116
- @rc[k] = Marshal.load(b_v)
117
- print "."
118
- end
119
- end
120
- end
121
- end
122
-
123
- tc_recover = TCRecover.new(ARGV)