roma 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4c0c8e4fac7121c2eded725b92fdd79bbc38ee9a
|
4
|
+
data.tar.gz: e1e9185743aa59abccd0ca9d16170806a91868e1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9e18113c7d99b224a9fd045fb52892f130d75c6e989b20e2e28cf168a13c7f3f1c8352fa72c7eec23c00c0490b28277e8acbc0d0a9166f10cef66d382a0c6cf
|
7
|
+
data.tar.gz: d6a9693f346d9e536489ea591734f73b3879933b4f0ca1bb86a8d4904aa60afc7fb709df0fa3d23cfc01e2932ecdd69919a2cec3c7a21cd93f091b90d9782ae0
|
data/CHANGELOG
CHANGED
@@ -1,3 +1,43 @@
|
|
1
|
+
*1.1.0 (Mar 30 2015)*
|
2
|
+
|
3
|
+
* I improved connection performance during booting [Takahiro Tokunaga] ee411f0
|
4
|
+
* change support ruby version [hiroaki-iwase] 69c9cab
|
5
|
+
* Update gemspec. [Hiroki Matsue] b2301de
|
6
|
+
* remove booting error in the log [Takahiro Tokunaga] c0cfd68
|
7
|
+
* Modify routing files checking condition. [Hiroki Matsue] c7bd4ab
|
8
|
+
* Remove 'Support' area and modify some commands. [Satoko Kurobe] 0146afe
|
9
|
+
* add new commands (set_log_shift_size, set_log_shift_age) [Masami Tazuke] 5d03bee
|
10
|
+
* Fix redirect loop of GUI. [Hiroki Matsue] 53a2841
|
11
|
+
* Improve Log Gathering logic [Hiroaki Iwase] dfcaa8e
|
12
|
+
* add hilatecy check [hiroaki-iwase] 78b0d24
|
13
|
+
* add LOG_STREAM_SHOW_WAIT_PARAM when show_logs cmd display logs [hiroaki-iwase] c8f237b
|
14
|
+
* change to recursive algorithm [hiroaki-iwase] 6009e53
|
15
|
+
* add gathered date for expiration in clean_up process [hiroaki-iwase] d26bb58
|
16
|
+
* support outrange direction [hiroaki-iwase] 420c1f8
|
17
|
+
* enable to point out start-date and end-date of gathering target [hiroaki-iwase] e1c60dd
|
18
|
+
* Correct some URLs. [Satoko Kurobe] d941dc9
|
19
|
+
* Remove README and add README.md [Satoko Kurobe] a9a9afc
|
20
|
+
* allow node name to only ascii without empty string. [hiroaki-iwase] f05600d
|
21
|
+
* add check argument in setroute [hiroaki-iwase] 6b60675
|
22
|
+
* remove github issue url [Takahiro Tokunaga] 94feeed
|
23
|
+
* add replication_in_host option [Takahiro Tokunaga] 2284a53
|
24
|
+
* Define rome.gemspec [Tatsuya Sato] e4c4a89
|
25
|
+
|
26
|
+
*1.1.0RC2 (Jan 19 2015)*
|
27
|
+
|
28
|
+
* modify merge prob(delete ruby/server dir, mv groonga relating file) [hiroaki-iwase] 699e0b7
|
29
|
+
|
30
|
+
*1.1.0RC1 (Jan 7 2015)*
|
31
|
+
|
32
|
+
* allow cpdb in just case of RubyHashStorage & TCStorage [hiroaki-iwase] 42ef43b
|
33
|
+
* add storage type checking to cpdb [hiroaki-iwase] 47c4e56
|
34
|
+
* delete server directory [Takahiro Tokunaga] 75ee999
|
35
|
+
* Abolish ruby server dir [satoryu] bfe2339
|
36
|
+
* Declare the license of ROMA in gemspec file [satoryu] c644f93
|
37
|
+
* Add Groonga based storage backend [Kouhei Sutou] fd993d3
|
38
|
+
* Use auto test runner [Kouhei Sutou] 2e8367f
|
39
|
+
* Use test-unit gem [Kouhei Sutou] 81677d1
|
40
|
+
|
1
41
|
*1.0.0 (Sep 30 2014)*
|
2
42
|
|
3
43
|
* Add new function to get vnodes information of each data [hiroaki-iwase] ad25c6e
|
@@ -177,7 +217,7 @@
|
|
177
217
|
* add mail subject prefix feature [byplayer] afcaf48
|
178
218
|
* add mailer path option to roma watch configuration file . [byplayer] ee997e1
|
179
219
|
* add the program for watching a ROMA [Muga Nishizawa] ee916a8
|
180
|
-
* bugfix:after the first node
|
220
|
+
* bugfix:after the first node does join, lost vnodes cannot be detected. [junji torii] 2a5b3b2
|
181
221
|
* refactor:exclusive operation for iteration in the storage. [junji torii] 7f7d27c
|
182
222
|
* bugfix:stop by irregular data in storage_clean_up_process [junji torii] 40ba9bb
|
183
223
|
* add sample_watcher3, which is a checker for split brain [muga] 749f444
|
@@ -196,7 +236,7 @@
|
|
196
236
|
* fixed bug for a recover command option. [junji torii] b847b4d
|
197
237
|
* the forward operation was corrected in the get command. [junji torii] e18019a
|
198
238
|
* improved a vnode balance parameter. [junji torii] 40c762c
|
199
|
-
* Bug was fixed that auto-termination logic when my node
|
239
|
+
* Bug was fixed that auto-termination logic when my node doesn't exist in the routing-table. [junji torii] 4300767
|
200
240
|
|
201
241
|
*0.8.2 (Jan 6 2010)*
|
202
242
|
|
data/Gemfile
CHANGED
@@ -1,17 +1,3 @@
|
|
1
1
|
source "https://rubygems.org"
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
# Back-end storages
|
6
|
-
group :tokyocabinet do
|
7
|
-
gem 'tokyocabinet', :git => 'https://github.com/roma/tokyocabinet-ruby.git'
|
8
|
-
end
|
9
|
-
|
10
|
-
group :gdbm do
|
11
|
-
gem 'ffi'
|
12
|
-
gem 'gdbm'
|
13
|
-
end
|
14
|
-
|
15
|
-
group :sqlite3 do
|
16
|
-
gem 'sqlite3'
|
17
|
-
end
|
3
|
+
gemspec
|
data/LICENSE
CHANGED
@@ -671,4 +671,4 @@ into proprietary programs. If your program is a subroutine library, you
|
|
671
671
|
may consider it more useful to permit linking proprietary applications with
|
672
672
|
the library. If this is what you want to do, use the GNU Lesser General
|
673
673
|
Public License instead of this License. But first, please read
|
674
|
-
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
674
|
+
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
data/README.md
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
# ROMA - A Distributed Key-Value Store in Ruby
|
2
|
+
|
3
|
+
ROMA is one of the data storing systems for distributed key-value stores.
|
4
|
+
It is a completely decentralized distributed system that consists of multiple
|
5
|
+
processes, called nodes, on several machines. It is based on pure P2P architecture
|
6
|
+
like a distributed hash table, thus it provides high availability and scalability.
|
7
|
+
|
8
|
+
ROMA is written in Ruby. However, following choices are available to
|
9
|
+
access to ROMA.
|
10
|
+
|
11
|
+
* Client libraries of Ruby and Java are available.
|
12
|
+
* ROMA protocol is compatible with memcached text-based one so that
|
13
|
+
any memcached client libraries allows users to interact with ROMA.
|
14
|
+
|
15
|
+
More information is [here](http://roma-kvs.org/ "ROMA").
|
16
|
+
|
17
|
+
## Documentation
|
18
|
+
|
19
|
+
* Refer to [ROMA documentations](http://roma-kvs.org/ "ROMA")
|
20
|
+
|
21
|
+
## Requirements
|
22
|
+
* Ruby >= 2.1.0
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
## Installation
|
27
|
+
### Install ROMA
|
28
|
+
You can simply install ROMA and dependency libralies by using a "gems" command of Ruby as follows.
|
29
|
+
|
30
|
+
```
|
31
|
+
$ gem install roma
|
32
|
+
```
|
33
|
+
|
34
|
+
### Make routing files
|
35
|
+
|
36
|
+
ROMA is required to make the routing files before starting up.
|
37
|
+
The routing file is stored the routing information of each processes.
|
38
|
+
|
39
|
+
```
|
40
|
+
$ mkroute localhost_10001 localhost_10002 --replication_in_host
|
41
|
+
```
|
42
|
+
|
43
|
+
If succeeded, two new files which named localhost_10001.route and localhost_10002.route created in the current directory.
|
44
|
+
Refer to [Commands](http://roma-kvs.org/commands.html "Commands") for more detail information about Shell Commands.
|
45
|
+
|
46
|
+
### Start up ROMA
|
47
|
+
Run two processes by using a romad.rb program as follows:
|
48
|
+
|
49
|
+
```
|
50
|
+
$ romad localhost -p 10001 -d --replication_in_host
|
51
|
+
$ romad localhost -p 10002 -d --replication_in_host
|
52
|
+
```
|
53
|
+
|
54
|
+
Refer to [Commands](http://roma-kvs.org/commands.html "Commands") for more detail information about Shell Commands.
|
55
|
+
|
56
|
+
## Usage
|
57
|
+
Like memcached, you can connect to ROMA with telnet. Connect to the ROMA process that you ran above.
|
58
|
+
|
59
|
+
```
|
60
|
+
$ telnet localhost 10001
|
61
|
+
```
|
62
|
+
|
63
|
+
You can interact with ROMA in the same way of memcached commands.
|
64
|
+
|
65
|
+
```
|
66
|
+
set foo 0 0 3 <return>
|
67
|
+
bar <return>
|
68
|
+
STORED
|
69
|
+
get foo <return>
|
70
|
+
VALUE foo 0 3
|
71
|
+
bar
|
72
|
+
END
|
73
|
+
```
|
74
|
+
|
75
|
+
Refer to [Commands](http://roma-kvs.org/commands.html "Commands") for more detail information about ROMA Commands.
|
76
|
+
|
77
|
+
## Promoters
|
78
|
+
Roma is promoted by [Rakuten, Inc.](http://global.rakuten.com/corp/) and [Rakuten Institute of Technology](http://rit.rakuten.co.jp/).
|
data/Rakefile
CHANGED
@@ -1,14 +1,6 @@
|
|
1
|
-
require '
|
1
|
+
require 'bundler/gem_tasks'
|
2
2
|
require 'rake'
|
3
3
|
|
4
|
-
begin
|
5
|
-
require 'rubygems/package_task'
|
6
|
-
PackageTask = Gem::PackageTask
|
7
|
-
rescue LoadError
|
8
|
-
require 'rake/gempackagetask'
|
9
|
-
PackageTask = Rake::GemPackageTask
|
10
|
-
end
|
11
|
-
|
12
4
|
begin
|
13
5
|
require 'rdoc/task'
|
14
6
|
rescue LoadError
|
@@ -22,59 +14,6 @@ RDOC_OPTIONS = [
|
|
22
14
|
"-c UTF-8",
|
23
15
|
]
|
24
16
|
|
25
|
-
# gem tasks
|
26
|
-
base = 'ruby/server/'
|
27
|
-
PKG_FILES = FileList[
|
28
|
-
'[A-Z]*',
|
29
|
-
base + 'bin/**/*',
|
30
|
-
base + 'lib/**/*',
|
31
|
-
base + 'test/**/*.rb',
|
32
|
-
base + 'spec/**/*.rb',
|
33
|
-
base + 'doc/**/*',
|
34
|
-
base + 'examples/**/*',
|
35
|
-
]
|
36
|
-
|
37
|
-
EXEC_TABLE = Dir.entries(base + 'bin').reject{ |d| d =~ /^\.+$/ || d =~ /^sample_/ }
|
38
|
-
|
39
|
-
require File.expand_path(File.join('ruby', 'server', 'lib', 'roma', 'version'), File.dirname(__FILE__))
|
40
|
-
VER_NUM = Roma::VERSION
|
41
|
-
|
42
|
-
if VER_NUM =~ /([0-9.p-]+)$/
|
43
|
-
CURRENT_VERSION = $1.delete("-")
|
44
|
-
else
|
45
|
-
CURRENT_VERSION = "0.0.0"
|
46
|
-
end
|
47
|
-
|
48
|
-
SPEC = Gem::Specification.new do |s|
|
49
|
-
s.authors = ["Junji Torii", "Hiroki Matsue"]
|
50
|
-
s.homepage = 'http://code.google.com/p/roma-prj/'
|
51
|
-
s.name = "roma"
|
52
|
-
s.version = CURRENT_VERSION
|
53
|
-
s.summary = "ROMA server"
|
54
|
-
s.description = <<-EOF
|
55
|
-
ROMA server
|
56
|
-
EOF
|
57
|
-
s.files = PKG_FILES.to_a
|
58
|
-
|
59
|
-
# Use these for libraries.
|
60
|
-
s.require_path = base + 'lib'
|
61
|
-
|
62
|
-
# Use these for applications.
|
63
|
-
s.bindir = base + "bin"
|
64
|
-
s.executables = EXEC_TABLE
|
65
|
-
s.default_executable = "romad"
|
66
|
-
|
67
|
-
s.has_rdoc = true
|
68
|
-
s.rdoc_options.concat RDOC_OPTIONS
|
69
|
-
s.extra_rdoc_files = ["README", "CHANGELOG"]
|
70
|
-
|
71
|
-
s.add_dependency('eventmachine')
|
72
|
-
end
|
73
|
-
|
74
|
-
package_task = PackageTask.new(SPEC) do |pkg|
|
75
|
-
end
|
76
|
-
|
77
|
-
|
78
17
|
Rake::RDocTask.new("doc") { |rdoc|
|
79
18
|
rdoc.rdoc_dir = 'doc'
|
80
19
|
rdoc.title = "ROMA documents"
|
data/bin/chg_redundancy
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'pathname'
|
3
|
+
|
4
|
+
base_path = Pathname(__FILE__).dirname.parent.expand_path
|
5
|
+
$LOAD_PATH.unshift("#{base_path}/lib")
|
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
|
+
require 'roma/tools/chg_redundancy'
|
data/bin/cpdb
ADDED
data/bin/key_access
ADDED
data/bin/key_list
ADDED
data/bin/log_merger
ADDED
@@ -1,6 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
require 'pathname'
|
2
3
|
|
3
|
-
|
4
|
+
base_path = Pathname(__FILE__).dirname.parent.expand_path
|
5
|
+
$LOAD_PATH.unshift("#{base_path}/lib")
|
4
6
|
|
5
7
|
require 'optparse'
|
6
8
|
require 'roma/tools/mkconfig'
|
data/bin/mkrecent
ADDED
data/bin/mkroute
ADDED
@@ -1,12 +1,13 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'pathname'
|
3
3
|
|
4
|
-
base_path = Pathname(__FILE__).dirname.parent.
|
5
|
-
$LOAD_PATH.unshift("#{base_path}/
|
4
|
+
base_path = Pathname(__FILE__).dirname.parent.expand_path
|
5
|
+
$LOAD_PATH.unshift("#{base_path}/lib")
|
6
6
|
|
7
|
-
client_base_path = Pathname(__FILE__).dirname.parent.parent.
|
7
|
+
client_base_path = Pathname(__FILE__).dirname.parent.parent.expand_path
|
8
8
|
$LOAD_PATH.unshift("#{client_base_path}/roma-ruby-client/lib")
|
9
9
|
|
10
|
+
|
10
11
|
require 'roma/tools/multi_commander'
|
11
12
|
|
12
13
|
if ARGV.length < 2
|
data/bin/recoverlost
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'pathname'
|
3
|
+
|
4
|
+
base_path = Pathname(__FILE__).dirname.parent.expand_path
|
5
|
+
$LOAD_PATH.unshift("#{base_path}/lib")
|
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
|
+
|
11
|
+
require 'roma/tools/recoverlost'
|
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'pathname'
|
3
|
+
|
4
|
+
base_path = Pathname(__FILE__).dirname.parent.expand_path
|
5
|
+
$LOAD_PATH.unshift("#{base_path}/lib")
|
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
|
+
require 'roma/tools/recoverlost_alist'
|
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'pathname'
|
3
|
+
|
4
|
+
base_path = Pathname(__FILE__).dirname.parent.expand_path
|
5
|
+
$LOAD_PATH.unshift("#{base_path}/lib")
|
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
|
+
require 'roma/tools/recoverlost_alist_all'
|
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'pathname'
|
3
|
+
|
4
|
+
base_path = Pathname(__FILE__).dirname.parent.expand_path
|
5
|
+
$LOAD_PATH.unshift("#{base_path}/lib")
|
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
|
+
require 'roma/tools/recoverlost_alist_keys'
|
data/bin/roma_watcher
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'pathname'
|
3
|
+
|
4
|
+
base_path = Pathname(__FILE__).dirname.parent.expand_path
|
5
|
+
$LOAD_PATH.unshift("#{base_path}/lib")
|
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
|
+
require 'roma/tools/roma_watcher'
|
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'pathname'
|
3
|
+
|
4
|
+
base_path = Pathname(__FILE__).dirname.parent.expand_path
|
5
|
+
$LOAD_PATH.unshift("#{base_path}/lib")
|
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
|
+
require 'roma/tools/safecopy_integration_test'
|
data/bin/safecopy_test
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'pathname'
|
3
|
+
|
4
|
+
base_path = Pathname(__FILE__).dirname.parent.expand_path
|
5
|
+
$LOAD_PATH.unshift("#{base_path}/lib")
|
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
|
+
require 'roma/tools/safecopy_test'
|
data/bin/sample_watcher
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'pathname'
|
3
|
+
|
4
|
+
base_path = Pathname(__FILE__).dirname.parent.expand_path
|
5
|
+
$LOAD_PATH.unshift("#{base_path}/lib")
|
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
|
+
require 'roma/tools/sample_watcher'
|
data/bin/sample_watcher2
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'pathname'
|
3
|
+
|
4
|
+
base_path = Pathname(__FILE__).dirname.parent.expand_path
|
5
|
+
$LOAD_PATH.unshift("#{base_path}/lib")
|
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
|
+
require 'roma/tools/sample_watcher2'
|
data/bin/sample_watcher3
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'pathname'
|
3
|
+
|
4
|
+
base_path = Pathname(__FILE__).dirname.parent.expand_path
|
5
|
+
$LOAD_PATH.unshift("#{base_path}/lib")
|
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
|
+
require 'roma/tools/sample_watcher3'
|
data/bin/simple_bench
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'pathname'
|
3
|
+
|
4
|
+
base_path = Pathname(__FILE__).dirname.parent.expand_path
|
5
|
+
$LOAD_PATH.unshift("#{base_path}/lib")
|
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
|
+
require 'roma/tools/simple_bench'
|
11
|
+
|
data/bin/ssroute
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'pathname'
|
3
|
+
|
4
|
+
base_path = Pathname(__FILE__).dirname.parent.expand_path
|
5
|
+
$LOAD_PATH.unshift("#{base_path}/lib")
|
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
|
+
require 'roma/tools/ssroute'
|
@@ -0,0 +1,123 @@
|
|
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)
|
data/bin/test-scenario
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'pathname'
|
3
|
+
|
4
|
+
base_path = Pathname(__FILE__).dirname.parent.expand_path
|
5
|
+
$LOAD_PATH.unshift("#{base_path}/lib")
|
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
|
+
require 'roma/tools/test-scenario'
|
11
|
+
|