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
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)