roma 1.0.0 → 1.1.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.
- checksums.yaml +4 -4
- data/CHANGELOG +42 -2
- data/Gemfile +1 -15
- data/LICENSE +1 -1
- data/README.md +78 -0
- data/Rakefile +1 -62
- data/bin/chg_redundancy +10 -0
- data/bin/cpdb +7 -0
- data/bin/key_access +7 -0
- data/bin/key_list +7 -0
- data/bin/log_merger +7 -0
- data/{ruby/server/bin → bin}/mkconfig +3 -1
- data/bin/mkrecent +7 -0
- data/bin/mkroute +7 -0
- data/{ruby/server/bin → bin}/multi_commander +4 -3
- data/bin/recoverlost +11 -0
- data/bin/recoverlost_alist +10 -0
- data/bin/recoverlost_alist_all +10 -0
- data/bin/recoverlost_alist_keys +10 -0
- data/bin/roma_watcher +10 -0
- data/{ruby/server/bin → bin}/romad +3 -2
- data/bin/safecopy_integration_test +10 -0
- data/bin/safecopy_test +10 -0
- data/bin/sample_watcher +10 -0
- data/bin/sample_watcher2 +10 -0
- data/bin/sample_watcher3 +10 -0
- data/bin/simple_bench +11 -0
- data/bin/ssroute +10 -0
- data/bin/tc_data_restore.rb +123 -0
- data/bin/test-scenario +11 -0
- data/bin/tribunus +7 -0
- data/{ruby/server/lib → lib}/roma/async_process.rb +105 -26
- data/{ruby/server/lib → lib}/roma/command/bg_command_receiver.rb +0 -0
- data/{ruby/server/lib → lib}/roma/command/command_definition.rb +12 -12
- data/{ruby/server/lib → lib}/roma/command/mh_command_receiver.rb +4 -4
- data/{ruby/server/lib → lib}/roma/command/receiver.rb +0 -0
- data/{ruby/server/lib → lib}/roma/command/rt_command_receiver.rb +7 -0
- data/{ruby/server/lib → lib}/roma/command/sys_command_receiver.rb +68 -3
- data/{ruby/server/lib → lib}/roma/command/util_command_receiver.rb +0 -0
- data/{ruby/server/lib → lib}/roma/command/vn_command_receiver.rb +0 -0
- data/{ruby/server/lib → lib}/roma/command_plugin.rb +0 -0
- data/{ruby/server/lib → lib}/roma/config.rb +4 -1
- data/{ruby/server/lib → lib}/roma/dns_cache.rb +0 -0
- data/{ruby/server/lib → lib}/roma/event/con_pool.rb +0 -0
- data/{ruby/server/lib → lib}/roma/event/handler.rb +0 -0
- data/{ruby/server/lib → lib}/roma/logging/rlogger.rb +61 -2
- data/{ruby/server/lib → lib}/roma/messaging/con_pool.rb +14 -0
- data/{ruby/server/lib → lib}/roma/plugin/plugin_alist.rb +0 -0
- data/{ruby/server/lib → lib}/roma/plugin/plugin_cmd_aliases.rb +0 -0
- data/{ruby/server/lib → lib}/roma/plugin/plugin_debug.rb +0 -0
- data/{ruby/server/lib → lib}/roma/plugin/plugin_gui.rb +12 -13
- data/{ruby/server/lib → lib}/roma/plugin/plugin_map.rb +0 -0
- data/{ruby/server/lib → lib}/roma/plugin/plugin_mapcount.rb +0 -0
- data/{ruby/server/lib → lib}/roma/plugin/plugin_storage.rb +11 -11
- data/{ruby/server/lib → lib}/roma/plugin/plugin_test.rb +0 -0
- data/{ruby/server/lib → lib}/roma/romad.rb +25 -1
- data/{ruby/server/lib → lib}/roma/routing/cb_rttable.rb +0 -0
- data/{ruby/server/lib → lib}/roma/routing/merkle_tree.rb +0 -0
- data/{ruby/server/lib → lib}/roma/routing/random_balancer.rb +0 -0
- data/{ruby/server/lib → lib}/roma/routing/random_partitioner.rb +0 -0
- data/{ruby/server/lib → lib}/roma/routing/routing_data.rb +0 -0
- data/{ruby/server/lib → lib}/roma/routing/rttable.rb +0 -0
- data/{ruby/server/lib → lib}/roma/stats.rb +11 -0
- data/{ruby/server/lib → lib}/roma/storage/basic_storage.rb +3 -0
- data/{ruby/server/lib → lib}/roma/storage/dbm_storage.rb +0 -0
- data/{ruby/server/lib → lib}/roma/storage/dummy_storage.rb +0 -0
- data/lib/roma/storage/groonga_storage.rb +101 -0
- data/{ruby/server/lib → lib}/roma/storage/rh_storage.rb +0 -0
- data/{ruby/server/lib → lib}/roma/storage/sqlite3_storage.rb +0 -0
- data/{ruby/server/lib → lib}/roma/storage/tc_storage.rb +0 -0
- data/{ruby/server/lib → lib}/roma/tools/chg_redundancy.rb +0 -0
- data/{ruby/server/lib → lib}/roma/tools/cpdb.rb +13 -2
- data/{ruby/server/lib → lib}/roma/tools/key_access.rb +1 -1
- data/{ruby/server/lib → lib}/roma/tools/key_list.rb +1 -1
- data/{ruby/server/lib → lib}/roma/tools/log_merger.rb +0 -0
- data/{ruby/server/lib → lib}/roma/tools/mkconfig.rb +1 -1
- data/{ruby/server/lib → lib}/roma/tools/mkrecent.rb +1 -1
- data/{ruby/server/lib → lib}/roma/tools/mkroute.rb +5 -1
- data/{ruby/server/lib → lib}/roma/tools/multi_commander.rb +0 -0
- data/{ruby/server/lib → lib}/roma/tools/recoverlost.rb +0 -0
- data/{ruby/server/lib → lib}/roma/tools/recoverlost_alist.rb +0 -0
- data/{ruby/server/lib → lib}/roma/tools/recoverlost_alist_all.rb +0 -0
- data/{ruby/server/lib → lib}/roma/tools/recoverlost_alist_keys.rb +0 -0
- data/{ruby/server/lib → lib}/roma/tools/recoverlost_lib.rb +1 -1
- data/{ruby/server/lib → lib}/roma/tools/roma_watcher.rb +0 -0
- data/{ruby/server/lib → lib}/roma/tools/roma_watcher_config.yml.example +0 -0
- data/{ruby/server/lib → lib}/roma/tools/safecopy_integration_test.rb +0 -0
- data/{ruby/server/lib → lib}/roma/tools/safecopy_test.rb +0 -0
- data/{ruby/server/lib → lib}/roma/tools/sample_watcher.rb +0 -0
- data/{ruby/server/lib → lib}/roma/tools/sample_watcher2.rb +0 -0
- data/{ruby/server/lib → lib}/roma/tools/sample_watcher3.rb +0 -0
- data/{ruby/server/lib → lib}/roma/tools/simple_bench.rb +0 -0
- data/{ruby/server/lib → lib}/roma/tools/simple_bench2.rb +0 -0
- data/{ruby/server/lib → lib}/roma/tools/ssroute.rb +1 -1
- data/{ruby/server/lib → lib}/roma/tools/test-scenario.rb +3 -3
- data/{ruby/server/lib → lib}/roma/tools/tribunus.rb +1 -1
- data/lib/roma/version.rb +4 -0
- data/{ruby/server/lib → lib}/roma/write_behind.rb +0 -0
- data/{ruby/server/test → test}/config4mhash.rb +0 -0
- data/{ruby/server/test → test}/config4storage_error.rb +0 -0
- data/{ruby/server/test → test}/config4test.rb +0 -0
- data/{ruby/server/test → test}/rcirb.rb +0 -0
- data/{ruby/server/test → test}/roma-test-utils.rb +10 -14
- data/test/run-test.rb +20 -0
- data/{ruby/server/test → test}/storage_error_storage.rb +0 -0
- data/{ruby/server/test → test}/t_command_definition.rb +10 -10
- data/{ruby/server/test → test}/t_cpdata.rb +0 -0
- data/{ruby/server/test → test}/t_eventmachine.rb +0 -0
- data/{ruby/server/test → test}/t_listplugin.rb +9 -3
- data/{ruby/server/test → test}/t_mapcountplugin.rb +0 -0
- data/{ruby/server/test → test}/t_mapplugin.rb +9 -3
- data/{ruby/server/test → test}/t_mhash.rb +7 -7
- data/{ruby/server/test → test}/t_protocol.rb +0 -0
- data/{ruby/server/test → test}/t_rclient.rb +8 -2
- data/{ruby/server/test → test}/t_routing_data.rb +0 -0
- data/{ruby/server/test → test}/t_storage.rb +58 -26
- data/{ruby/server/test → test}/t_storage_error.rb +5 -3
- data/{ruby/server/test → test}/t_writebehind.rb +17 -17
- metadata +225 -122
- data/README +0 -17
- data/ruby/server/bin/chg_redundancy +0 -10
- data/ruby/server/bin/cpdb +0 -6
- data/ruby/server/bin/key_access +0 -7
- data/ruby/server/bin/key_list +0 -7
- data/ruby/server/bin/log_merger +0 -6
- data/ruby/server/bin/mkrecent +0 -6
- data/ruby/server/bin/mkroute +0 -6
- data/ruby/server/bin/recoverlost +0 -10
- data/ruby/server/bin/recoverlost_alist +0 -10
- data/ruby/server/bin/recoverlost_alist_all +0 -10
- data/ruby/server/bin/recoverlost_alist_keys +0 -10
- data/ruby/server/bin/roma_watcher +0 -7
- data/ruby/server/bin/safecopy_integration_test +0 -10
- data/ruby/server/bin/safecopy_test +0 -10
- data/ruby/server/bin/sample_watcher +0 -7
- data/ruby/server/bin/sample_watcher2 +0 -7
- data/ruby/server/bin/sample_watcher3 +0 -7
- data/ruby/server/bin/simple_bench +0 -11
- data/ruby/server/bin/ssroute +0 -6
- data/ruby/server/bin/test-scenario +0 -11
- data/ruby/server/bin/tribunus +0 -6
- data/ruby/server/lib/roma/version.rb +0 -4
- data/ruby/server/test/run-test.rb +0 -17
@@ -41,7 +41,7 @@ module Roma
|
|
41
41
|
end
|
42
42
|
|
43
43
|
unless @storages.key?(hname)
|
44
|
-
send_data("SERVER_ERROR #{hname}
|
44
|
+
send_data("SERVER_ERROR #{hname} does not exists.\r\n")
|
45
45
|
return
|
46
46
|
end
|
47
47
|
data = @storages[hname].get(vn, key, 0)
|
@@ -64,7 +64,7 @@ module Roma
|
|
64
64
|
end
|
65
65
|
|
66
66
|
unless @storages.key?(hname)
|
67
|
-
send_data("SERVER_ERROR #{hname}
|
67
|
+
send_data("SERVER_ERROR #{hname} does not exists.\r\n")
|
68
68
|
return
|
69
69
|
end
|
70
70
|
data = @storages[hname].get(vn, key, 0)
|
@@ -138,7 +138,7 @@ module Roma
|
|
138
138
|
return send_data("#{res}\r\n")
|
139
139
|
end
|
140
140
|
unless @storages.key?(hname)
|
141
|
-
send_data("SERVER_ERROR #{hname}
|
141
|
+
send_data("SERVER_ERROR #{hname} does not exists.\r\n")
|
142
142
|
return
|
143
143
|
end
|
144
144
|
|
@@ -180,7 +180,7 @@ module Roma
|
|
180
180
|
return send_data("SERVER_ERROR Routing table is inconsistent.\r\n")
|
181
181
|
end
|
182
182
|
unless @storages.key?(hname)
|
183
|
-
send_data("SERVER_ERROR #{hname}
|
183
|
+
send_data("SERVER_ERROR #{hname} does not exists.\r\n")
|
184
184
|
return
|
185
185
|
end
|
186
186
|
|
@@ -218,7 +218,7 @@ module Roma
|
|
218
218
|
d = Digest::SHA1.hexdigest(key).hex % @rttable.hbits
|
219
219
|
vn = @rttable.get_vnode_id(d)
|
220
220
|
unless @storages.key?(hname)
|
221
|
-
send_data("SERVER_ERROR #{hname}
|
221
|
+
send_data("SERVER_ERROR #{hname} does not exists.\r\n")
|
222
222
|
return
|
223
223
|
end
|
224
224
|
if @storages[hname].rdelete(vn, key, d, s[2].to_i)
|
@@ -319,7 +319,7 @@ module Roma
|
|
319
319
|
end
|
320
320
|
|
321
321
|
unless @storages.key?(hname)
|
322
|
-
send_data("SERVER_ERROR #{hname}
|
322
|
+
send_data("SERVER_ERROR #{hname} does not exists.\r\n")
|
323
323
|
return
|
324
324
|
end
|
325
325
|
|
@@ -358,7 +358,7 @@ module Roma
|
|
358
358
|
end
|
359
359
|
|
360
360
|
unless @storages.key?(hname)
|
361
|
-
send_data("SERVER_ERROR #{hname}
|
361
|
+
send_data("SERVER_ERROR #{hname} does not exists.\r\n")
|
362
362
|
return
|
363
363
|
end
|
364
364
|
|
@@ -413,7 +413,7 @@ module Roma
|
|
413
413
|
@log.error("forward get failed:nid=#{nid} key=#{k}")
|
414
414
|
return nil
|
415
415
|
elsif res == "END\r\n"
|
416
|
-
# value
|
416
|
+
# value does not found
|
417
417
|
elsif res.start_with?("ERROR")
|
418
418
|
@rttable.proc_succeed(nid)
|
419
419
|
con.close_connection
|
@@ -454,7 +454,7 @@ module Roma
|
|
454
454
|
def store(fnc, hname, vn, k, d, expt, v, nodes)
|
455
455
|
expt = chg_time_expt(expt)
|
456
456
|
unless @storages.key?(hname)
|
457
|
-
send_data("SERVER_ERROR #{hname}
|
457
|
+
send_data("SERVER_ERROR #{hname} does not exists.\r\n")
|
458
458
|
return
|
459
459
|
end
|
460
460
|
|
@@ -481,7 +481,7 @@ module Roma
|
|
481
481
|
def store_cas(hname, vn, k, d, clk, expt, v, nodes)
|
482
482
|
expt = chg_time_expt(expt)
|
483
483
|
unless @storages.key?(hname)
|
484
|
-
send_data("SERVER_ERROR #{hname}
|
484
|
+
send_data("SERVER_ERROR #{hname} does not exists.\r\n")
|
485
485
|
return
|
486
486
|
end
|
487
487
|
|
@@ -587,7 +587,7 @@ module Roma
|
|
587
587
|
|
588
588
|
def store_incr_decr(fnc, hname, vn, k, d, v, nodes)
|
589
589
|
unless @storages.key?(hname)
|
590
|
-
send_data("SERVER_ERROR #{hname}
|
590
|
+
send_data("SERVER_ERROR #{hname} does not exists.\r\n")
|
591
591
|
return
|
592
592
|
end
|
593
593
|
|
File without changes
|
@@ -156,12 +156,21 @@ module Roma
|
|
156
156
|
if Config.const_defined?(:DATACOPY_STREAM_COPY_WAIT_PARAM)
|
157
157
|
@stats.stream_copy_wait_param = Config::DATACOPY_STREAM_COPY_WAIT_PARAM
|
158
158
|
end
|
159
|
+
if Config.const_defined?(:LOG_STREAM_SHOW_WAIT_PARAM)
|
160
|
+
@stats.stream_show_wait_param = Config::LOG_STREAM_SHOW_WAIT_PARAM
|
161
|
+
end
|
159
162
|
if Config.const_defined?(:WB_COMMAND_MAP)
|
160
163
|
@stats.wb_command_map = Config::WB_COMMAND_MAP
|
161
164
|
end
|
162
165
|
if Config.const_defined?(:STORAGE_CLEAN_UP_INTERVAL)
|
163
166
|
@stats.clean_up_interval = Config::STORAGE_CLEAN_UP_INTERVAL
|
164
167
|
end
|
168
|
+
if Config.const_defined?(:LOG_SHIFT_SIZE)
|
169
|
+
@stats.log_shift_size = Config::LOG_SHIFT_SIZE
|
170
|
+
end
|
171
|
+
if Config.const_defined?(:LOG_SHIFT_AGE)
|
172
|
+
@stats.log_shift_age = Config::LOG_SHIFT_AGE
|
173
|
+
end
|
165
174
|
end
|
166
175
|
|
167
176
|
def initialize_connection
|
@@ -283,9 +292,16 @@ module Roma
|
|
283
292
|
|
284
293
|
opts.on("-n", "--name [name]") { |v| @stats.name = v }
|
285
294
|
|
295
|
+
##
|
296
|
+
# "--enabled_repeathost" is deplicated. We will rename it to "--replication_in_host"
|
297
|
+
##
|
286
298
|
@stats.enabled_repetition_host_in_routing = false
|
287
299
|
opts.on(nil,"--enabled_repeathost", "Allow redundancy to same host"){
|
288
300
|
@stats.enabled_repetition_host_in_routing = true
|
301
|
+
puts "Warning: \"--enabled_repeathost\" is deplicated. Please use \"--replication_in_host\""
|
302
|
+
}
|
303
|
+
opts.on(nil,"--replication_in_host", "Allow redundancy to same host"){
|
304
|
+
@stats.enabled_repetition_host_in_routing = true
|
289
305
|
}
|
290
306
|
|
291
307
|
@stats.disabled_cmd_protect = false
|
@@ -349,6 +365,7 @@ module Roma
|
|
349
365
|
st = st_class.new
|
350
366
|
st.storage_path = "#{path}/#{hname}"
|
351
367
|
st.vn_list = @rttable.vnodes
|
368
|
+
st.st_class = st_class
|
352
369
|
st.divnum = st_divnum
|
353
370
|
st.option = st_option
|
354
371
|
@storages[hname] = st
|
@@ -359,6 +376,7 @@ module Roma
|
|
359
376
|
st = st_class.new
|
360
377
|
st.storage_path = "#{path}/#{hname}"
|
361
378
|
st.vn_list = @rttable.vnodes
|
379
|
+
st.st_class = st_class
|
362
380
|
st.divnum = st_divnum
|
363
381
|
st.option = st_option
|
364
382
|
@storages[hname] = st
|
@@ -574,6 +592,12 @@ module Roma
|
|
574
592
|
end
|
575
593
|
|
576
594
|
def node_check(nid)
|
595
|
+
if @startup && @rttable.enabled_failover == false
|
596
|
+
unless Roma::Messaging::ConPool.instance.check_connection(nid)
|
597
|
+
@log.info("I'm wating for booting the #{nid} instance.")
|
598
|
+
return false
|
599
|
+
end
|
600
|
+
end
|
577
601
|
name = async_send_cmd(nid,"whoami\r\n",2)
|
578
602
|
return false unless name
|
579
603
|
if name != @stats.name
|
@@ -606,7 +630,7 @@ module Roma
|
|
606
630
|
|
607
631
|
idx=nodes.index(@stats.ap_str)
|
608
632
|
unless idx
|
609
|
-
@log.error("My node-id(=#{@stats.ap_str})
|
633
|
+
@log.error("My node-id(=#{@stats.ap_str}) does not found in the routingtable.")
|
610
634
|
EventMachine::stop_event_loop
|
611
635
|
return
|
612
636
|
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -37,6 +37,7 @@ module Roma
|
|
37
37
|
|
38
38
|
# proc param
|
39
39
|
attr_accessor :stream_copy_wait_param
|
40
|
+
attr_accessor :stream_show_wait_param
|
40
41
|
attr_accessor :dcnice
|
41
42
|
attr_accessor :clean_up_interval
|
42
43
|
|
@@ -76,6 +77,10 @@ module Roma
|
|
76
77
|
attr_accessor :gui_run_gather_logs
|
77
78
|
attr_accessor :gui_last_snapshot
|
78
79
|
|
80
|
+
# for log rotate
|
81
|
+
attr_accessor :log_shift_size
|
82
|
+
attr_accessor :log_shift_age
|
83
|
+
|
79
84
|
def initialize
|
80
85
|
@config_path = nil
|
81
86
|
@run_recover = false
|
@@ -92,6 +97,7 @@ module Roma
|
|
92
97
|
@gui_last_snapshot = []
|
93
98
|
@spushv_protection = false
|
94
99
|
@stream_copy_wait_param = 0.0001
|
100
|
+
@stream_show_wait_param = 0.001
|
95
101
|
@dcnice = 3
|
96
102
|
@clean_up_interval = 300
|
97
103
|
@enabled_vnodes_balance = nil
|
@@ -113,6 +119,8 @@ module Roma
|
|
113
119
|
@spushv_read_timeout = 100
|
114
120
|
@reqpushv_timeout_count = 300 # 0.1 * 300 sec
|
115
121
|
@routing_trans_timeout = 3600 * 3 # 3hr
|
122
|
+
@log_shift_size = 1048576
|
123
|
+
@log_shift_age = 0
|
116
124
|
end
|
117
125
|
|
118
126
|
def ap_str
|
@@ -141,6 +149,7 @@ module Roma
|
|
141
149
|
ret['stats.gui_last_snapshot'] = @gui_last_snapshot
|
142
150
|
ret['stats.spushv_protection'] = @spushv_protection
|
143
151
|
ret['stats.stream_copy_wait_param'] = @stream_copy_wait_param
|
152
|
+
ret['stats.stream_show_wait_param'] = @stream_show_wait_param
|
144
153
|
ret['stats.dcnice'] = @dcnice
|
145
154
|
ret['stats.clean_up_interval'] = @clean_up_interval
|
146
155
|
ret['stats.size_of_zredundant'] = @size_of_zredundant
|
@@ -160,6 +169,8 @@ module Roma
|
|
160
169
|
ret['stats.spushv_read_timeout'] = @spushv_read_timeout
|
161
170
|
ret['stats.reqpushv_timeout_count'] = @reqpushv_timeout_count
|
162
171
|
ret['stats.routing_trans_timeout'] = @routing_trans_timeout
|
172
|
+
ret['stats.log_shift_size'] = @log_shift_size
|
173
|
+
ret['stats.log_shift_age'] = @log_shift_age
|
163
174
|
ret
|
164
175
|
end
|
165
176
|
|
@@ -18,6 +18,7 @@ module Roma
|
|
18
18
|
attr_writer :storage_path
|
19
19
|
attr_writer :option
|
20
20
|
|
21
|
+
attr_accessor :st_class
|
21
22
|
attr_accessor :divnum
|
22
23
|
attr_accessor :each_vn_dump_sleep
|
23
24
|
attr_accessor :each_vn_dump_sleep_count
|
@@ -42,6 +43,7 @@ module Roma
|
|
42
43
|
|
43
44
|
@ext_name = 'db'
|
44
45
|
|
46
|
+
@st_class = nil
|
45
47
|
@divnum = 10
|
46
48
|
|
47
49
|
@each_vn_dump_sleep = 0.001
|
@@ -58,6 +60,7 @@ module Roma
|
|
58
60
|
def get_stat
|
59
61
|
ret = {}
|
60
62
|
ret['storage.storage_path'] = File.expand_path(@storage_path)
|
63
|
+
ret['storage.st_class'] = @st_class.to_s.match(/Roma::Storage::(.*)/)[1]
|
61
64
|
ret['storage.divnum'] = @divnum
|
62
65
|
ret['storage.option'] = @option
|
63
66
|
ret['storage.each_vn_dump_sleep'] = @each_vn_dump_sleep
|
File without changes
|
File without changes
|
@@ -0,0 +1,101 @@
|
|
1
|
+
require 'groonga'
|
2
|
+
require 'roma/storage/basic_storage'
|
3
|
+
|
4
|
+
module Roma
|
5
|
+
module Storage
|
6
|
+
|
7
|
+
class GroongaStorage < BasicStorage
|
8
|
+
def initialize
|
9
|
+
super
|
10
|
+
@ext_name = 'grn'
|
11
|
+
end
|
12
|
+
|
13
|
+
def get_stat
|
14
|
+
ret = super
|
15
|
+
@hdb.each_with_index do |hdb, i|
|
16
|
+
ret["storage[#{i}].path"] = File.expand_path(hdb.path)
|
17
|
+
ret["storage[#{i}].rnum"] = hdb.rnum
|
18
|
+
end
|
19
|
+
ret
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
def open_db(fname)
|
24
|
+
hdb = GroongaHash.new(fname)
|
25
|
+
hdb.open
|
26
|
+
hdb
|
27
|
+
end
|
28
|
+
|
29
|
+
def close_db(hdb)
|
30
|
+
hdb.close
|
31
|
+
end
|
32
|
+
|
33
|
+
class GroongaHash
|
34
|
+
def initialize(fname)
|
35
|
+
@fname = fname
|
36
|
+
end
|
37
|
+
|
38
|
+
def path
|
39
|
+
@hash.path
|
40
|
+
end
|
41
|
+
|
42
|
+
def put(key, value)
|
43
|
+
record = @hash.add(key)
|
44
|
+
@value[record.id] = value
|
45
|
+
end
|
46
|
+
|
47
|
+
def get(key)
|
48
|
+
record = @hash[key]
|
49
|
+
return nil if record.nil?
|
50
|
+
@value[record.id]
|
51
|
+
end
|
52
|
+
|
53
|
+
def out(key)
|
54
|
+
record = @hash[key]
|
55
|
+
if record
|
56
|
+
record.delete
|
57
|
+
true
|
58
|
+
else
|
59
|
+
false
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def rnum
|
64
|
+
@hash.count
|
65
|
+
end
|
66
|
+
|
67
|
+
def each
|
68
|
+
@hash.each do |record|
|
69
|
+
yield(record.key, @value[record.id])
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def open
|
74
|
+
@context = Groonga::Context.new(:encoding => :none)
|
75
|
+
if File.exist?(@fname)
|
76
|
+
@database = Groonga::Database.new(@fname, :context => @context)
|
77
|
+
else
|
78
|
+
@database = Groonga::Database.create(:context => @context,
|
79
|
+
:path => @fname)
|
80
|
+
Groonga::Schema.define(:context => @context) do |schema|
|
81
|
+
schema.create_table("hash",
|
82
|
+
:type => :hash,
|
83
|
+
:key_type => "ShortText") do |table|
|
84
|
+
table.text("value")
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
@hash = @context["hash"]
|
90
|
+
@value = @hash.column("value")
|
91
|
+
end
|
92
|
+
|
93
|
+
def close
|
94
|
+
@database.close
|
95
|
+
@context.close
|
96
|
+
@hash = @value = @database = @context = nil
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end # class GroongaStorage
|
100
|
+
end # module Storage
|
101
|
+
end # module Roma
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -19,6 +19,16 @@ module Roma
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
+
def check_storage_type
|
23
|
+
stats('st_class') do |line|
|
24
|
+
storage_type = line.match(/storages\[.+\]\.storage\.st_class\s(.+)/)[1].chomp
|
25
|
+
unless storage_type =~ /^(TCStorage|RubyHashStorage)$/
|
26
|
+
puts "ERROR:cpdb supports just TCStorage or RubyHashStorage system, your storage type is #{storage_type}"
|
27
|
+
exit
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
22
32
|
def backup(hname)
|
23
33
|
stat = get_safecopy_stats(hname)
|
24
34
|
if stat.uniq != [:normal]
|
@@ -93,8 +103,8 @@ module Roma
|
|
93
103
|
@con.gets
|
94
104
|
end
|
95
105
|
|
96
|
-
def stats
|
97
|
-
@con.puts "stat
|
106
|
+
def stats(regexp = "storage")
|
107
|
+
@con.puts "stat #{regexp}\r\n"
|
98
108
|
yield $_ while @con.gets != "END\r\n"
|
99
109
|
end
|
100
110
|
|
@@ -114,6 +124,7 @@ end
|
|
114
124
|
sc = Roma::SafeCopy.new("localhost", ARGV[0].to_i)
|
115
125
|
|
116
126
|
begin
|
127
|
+
sc.check_storage_type
|
117
128
|
sc.backup_all
|
118
129
|
sc.set_gui_last_snapshot
|
119
130
|
ensure
|
File without changes
|
@@ -359,7 +359,7 @@ module Roma
|
|
359
359
|
|
360
360
|
skip.call if @next_hash == "menu" || @next_hash == "server" || @next_hash == "fd_server" || @next_hash == "check_plugin"
|
361
361
|
break if end?(@base[@next_hash])
|
362
|
-
puts "if you
|
362
|
+
puts "if you doesn't input anything, default value is set."
|
363
363
|
Box.print_with_box(@defaults)
|
364
364
|
print_status(@results)
|
365
365
|
@base.print_question(@next_hash)
|
@@ -16,7 +16,11 @@ opts.banner = "usage:#{File.basename($0)} [options] node-id..."
|
|
16
16
|
opts.on("-h","--hash [bits]","(default=32)"){|v| dgst_bits = v.to_i }
|
17
17
|
opts.on("-d","--divide [bits]","(default=9)"){|v| div_bits = v.to_i }
|
18
18
|
opts.on("-r","--redundant [num]","(default=2)"){|v| rn = v.to_i }
|
19
|
-
opts.on(nil,"--enabled_repeathost"){|v|
|
19
|
+
opts.on(nil,"--enabled_repeathost"){|v|
|
20
|
+
repeathost=true
|
21
|
+
puts "Warning: \"--enabled_repeathost\" is deplicated. Please use \"--replication_in_host\""
|
22
|
+
}
|
23
|
+
opts.on(nil,"--replication_in_host"){|v| repeathost=true }
|
20
24
|
opts.parse!(ARGV)
|
21
25
|
|
22
26
|
nodes = ARGV
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -110,7 +110,7 @@ module Roma
|
|
110
110
|
def init_roma
|
111
111
|
@log.debug "begin init_roma"
|
112
112
|
exec "rm -f localhost_1121?.*"
|
113
|
-
exec "bin/mkroute -d 7 #{RomaProc.to_str(@roma_procs)} --
|
113
|
+
exec "bin/mkroute -d 7 #{RomaProc.to_str(@roma_procs)} --replication_in_host"
|
114
114
|
@log.debug "end init_roma"
|
115
115
|
end
|
116
116
|
|
@@ -124,7 +124,7 @@ module Roma
|
|
124
124
|
|
125
125
|
def start_roma_proc i
|
126
126
|
@log.debug "begin start_roma_proc"
|
127
|
-
str = "bin/romad #{@roma_procs[i].addr} -p #{@roma_procs[i].port.to_s} -d --
|
127
|
+
str = "bin/romad #{@roma_procs[i].addr} -p #{@roma_procs[i].port.to_s} -d --replication_in_host"
|
128
128
|
exec str
|
129
129
|
@roma_procs[i].pid = get_pid(str)
|
130
130
|
@log.debug "end start_roma_proc"
|
@@ -313,7 +313,7 @@ cnf = Roma::Test::Config.new(ARGV)
|
|
313
313
|
# check for a working path
|
314
314
|
unless File::exist?("#{cnf.working_path}/bin/romad")
|
315
315
|
# in invalid path
|
316
|
-
$stderr.puts "#{cnf.working_path}/bin/romad
|
316
|
+
$stderr.puts "#{cnf.working_path}/bin/romad does't found"
|
317
317
|
$stderr.puts "You should set to a working path option(-p)."
|
318
318
|
exit 1
|
319
319
|
end
|
@@ -6,7 +6,7 @@ UDP_PORT=14329
|
|
6
6
|
MULTICAST_ADDR="225.0.0.123"
|
7
7
|
ROMA_LOAD_PATH=File.expand_path(File.join(File.dirname(__FILE__),"../.."))
|
8
8
|
RUBY_COMMAND_OPTIONS=["-I",ROMA_LOAD_PATH]
|
9
|
-
ROMAD_OPTIONS=["--
|
9
|
+
ROMAD_OPTIONS=["--replication_in_host"]
|
10
10
|
bin_dir=File.expand_path(File.join(File.dirname(__FILE__),"../../../bin"))
|
11
11
|
ROMAD_PATH= File.expand_path(File.join(bin_dir,"romad"))
|
12
12
|
MKROUTE_PATH= File.expand_path(File.join(bin_dir,"mkroute"))
|
data/lib/roma/version.rb
ADDED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -8,27 +8,23 @@ require 'roma/messaging/con_pool'
|
|
8
8
|
module RomaTestUtils
|
9
9
|
module_function
|
10
10
|
def base_dir
|
11
|
-
Pathname(__FILE__).dirname.parent.
|
11
|
+
Pathname(__FILE__).dirname.parent.expand_path
|
12
12
|
end
|
13
13
|
|
14
|
-
def
|
15
|
-
base_dir + "
|
14
|
+
def bin_dir
|
15
|
+
base_dir + "bin"
|
16
16
|
end
|
17
17
|
|
18
|
-
def
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
def server_test_dir
|
23
|
-
server_base_dir + "test"
|
18
|
+
def test_dir
|
19
|
+
base_dir + "test"
|
24
20
|
end
|
25
21
|
|
26
22
|
def mkroute_path
|
27
|
-
(
|
23
|
+
(bin_dir + "mkroute").to_s
|
28
24
|
end
|
29
25
|
|
30
26
|
def romad_path
|
31
|
-
(
|
27
|
+
(bin_dir + "romad").to_s
|
32
28
|
end
|
33
29
|
|
34
30
|
def ruby_path
|
@@ -48,7 +44,7 @@ module RomaTestUtils
|
|
48
44
|
sh.system(ruby_path, mkroute_path,
|
49
45
|
"localhost_11211","localhost_11212",
|
50
46
|
"-d","3",
|
51
|
-
"--
|
47
|
+
"--replication_in_host")
|
52
48
|
sleep 0.2
|
53
49
|
do_command_romad conf
|
54
50
|
sleep 1
|
@@ -57,9 +53,9 @@ module RomaTestUtils
|
|
57
53
|
def do_command_romad conf
|
58
54
|
sh = Shell.new
|
59
55
|
sh.system(ruby_path,romad_path,"localhost","-p","11211","-d","--verbose",
|
60
|
-
"--disabled_cmd_protect","--config","#{
|
56
|
+
"--disabled_cmd_protect","--config","#{test_dir}/#{conf}")
|
61
57
|
sh.system(ruby_path,romad_path,"localhost","-p","11212","-d","--verbose",
|
62
|
-
"--disabled_cmd_protect","--config","#{
|
58
|
+
"--disabled_cmd_protect","--config","#{test_dir}/#{conf}")
|
63
59
|
end
|
64
60
|
|
65
61
|
def stop_roma
|
data/test/run-test.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require 'pathname'
|
5
|
+
|
6
|
+
base_path = Pathname(__FILE__).dirname.parent.expand_path
|
7
|
+
|
8
|
+
$LOAD_PATH.unshift("#{base_path}/lib")
|
9
|
+
$LOAD_PATH.unshift("#{base_path}/test")
|
10
|
+
|
11
|
+
client_base_path = Pathname(__FILE__).dirname.parent.parent.expand_path
|
12
|
+
$LOAD_PATH.unshift("#{client_base_path}/roma-ruby-client/lib")
|
13
|
+
|
14
|
+
require 'roma-test-utils'
|
15
|
+
|
16
|
+
Dir["#{base_path}/test/t_*.rb"].each do |test_file|
|
17
|
+
require File.basename(test_file, '*.rb')
|
18
|
+
end
|
19
|
+
|
20
|
+
exit(Test::Unit::AutoRunner.run)
|
File without changes
|