zookeeper 0.2 → 0.2.1
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.
- data.tar.gz.sig +0 -0
- data/CHANGELOG +2 -0
- data/README +18 -23
- data/Rakefile +2 -1
- data/ext/zookeeper_c.c +8 -8
- data/lib/zookeeper.rb +4 -4
- data/test/test_basic.rb +2 -2
- data/zookeeper.gemspec +4 -4
- metadata +3 -5
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGELOG
CHANGED
data/README
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
zookeeper
|
2
2
|
|
3
|
-
An interface to the
|
3
|
+
An interface to the Zookeeper distributed configuration server.
|
4
4
|
|
5
5
|
== License
|
6
6
|
|
@@ -12,47 +12,42 @@ sudo gem install zookeeper
|
|
12
12
|
|
13
13
|
== Usage
|
14
14
|
|
15
|
-
|
15
|
+
Connect to a server:
|
16
16
|
|
17
17
|
require 'rubygems'
|
18
18
|
require 'zookeeper'
|
19
|
-
z =
|
19
|
+
z = Zookeeper.new("localhost:2181")
|
20
20
|
|
21
|
-
|
21
|
+
Create, set and read nodes:
|
22
22
|
|
23
23
|
z.create("/bacon", "text to be stored in the new node", 0)
|
24
|
-
# => "/bacon"
|
25
|
-
|
26
24
|
data, stat = z.get("/bacon")
|
27
|
-
|
28
|
-
|
25
|
+
# => ["text to be stored in the new node"...]
|
26
|
+
|
29
27
|
z.set("/bacon", "an entirely different line of text", stat.version)
|
30
|
-
# => nil
|
31
|
-
|
32
28
|
z.set("/bacon", "this won't work", stat.version)
|
33
|
-
|
29
|
+
# CZookeeper::BadVersionError: expected version does not match actual version
|
34
30
|
|
35
31
|
data, stat = z.get("/bacon")
|
36
|
-
|
37
|
-
|
32
|
+
# => ["an entirely different line of text"...]
|
38
33
|
z.delete("/bacon", stat.version)
|
39
|
-
# => nil
|
40
34
|
|
41
|
-
|
35
|
+
Create ephemeral and sequence nodes:
|
42
36
|
|
43
37
|
z.create("/parent", "parent node", 0)
|
44
|
-
# => "/parent"
|
45
38
|
|
46
|
-
z.create("/parent/test-",
|
47
|
-
|
39
|
+
z.create("/parent/test-",
|
40
|
+
"an ordered ephemeral node",
|
41
|
+
Zookeeper::EPHEMERAL | Zookeeper::SEQUENCE)
|
42
|
+
# => "/parent/test-0"
|
48
43
|
|
49
|
-
z.create("/parent/test-",
|
50
|
-
|
44
|
+
z.create("/parent/test-",
|
45
|
+
"an ordered ephemeral node",
|
46
|
+
Zookeeper::EPHEMERAL | Zookeeper::SEQUENCE)
|
47
|
+
# => "/parent/test-1"
|
51
48
|
|
52
|
-
|
49
|
+
Acquire locks:
|
53
50
|
|
54
51
|
z.try_acquire "/parent/lock-", "content for the lock file" do |have_lock|
|
55
52
|
puts have_lock ? "we have the lock" : "we don't have the lock"
|
56
53
|
end
|
57
|
-
# we have the lock
|
58
|
-
# => nil
|
data/Rakefile
CHANGED
@@ -3,8 +3,9 @@ require 'echoe'
|
|
3
3
|
Echoe.new("zookeeper") do |p|
|
4
4
|
p.author = "Phillip Pearson, Eric Maland, Evan Weaver"
|
5
5
|
p.project = "fauna"
|
6
|
-
p.summary = "
|
6
|
+
p.summary = "An interface to the Zookeeper distributed configuration server."
|
7
7
|
p.url = "http://blog.evanweaver.com/files/doc/fauna/zookeeper/"
|
8
8
|
p.docs_host = "blog.evanweaver.com:~/www/bax/public/files/doc/"
|
9
9
|
p.clean_pattern += ["ext/lib", "ext/include", "ext/c", "ext/bin", "ext/conftest.dSYM"]
|
10
|
+
p.rdoc_pattern = /README|TODO|LICENSE|CHANGELOG|BENCH|COMPAT|zookeeper_c.c|zookeeper.rb/
|
10
11
|
end
|
data/ext/zookeeper_c.c
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
/* Ruby wrapper for the
|
1
|
+
/* Ruby wrapper for the Zookeeper C API
|
2
2
|
* Phillip Pearson <pp@myelin.co.nz>
|
3
3
|
* Eric Maland <eric@twitter.com>
|
4
4
|
*/
|
@@ -11,7 +11,7 @@
|
|
11
11
|
#include <errno.h>
|
12
12
|
#include <stdio.h>
|
13
13
|
|
14
|
-
static VALUE
|
14
|
+
static VALUE Zookeeper = Qnil;
|
15
15
|
static VALUE eNoNode = Qnil;
|
16
16
|
static VALUE eBadVersion = Qnil;
|
17
17
|
|
@@ -71,7 +71,7 @@ static VALUE method_initialize(VALUE self, VALUE hostPort) {
|
|
71
71
|
|
72
72
|
Check_Type(hostPort, T_STRING);
|
73
73
|
|
74
|
-
data = Data_Make_Struct(
|
74
|
+
data = Data_Make_Struct(Zookeeper, struct zk_rb_data, 0, free_zk_rb_data, zk);
|
75
75
|
|
76
76
|
zoo_set_debug_level(ZOO_LOG_LEVEL_INFO);
|
77
77
|
zoo_deterministic_conn_order(0);
|
@@ -413,10 +413,10 @@ static VALUE method_set_watcher(VALUE self, VALUE new_watcher) {
|
|
413
413
|
}
|
414
414
|
|
415
415
|
void Init_zookeeper_c() {
|
416
|
-
|
416
|
+
Zookeeper = rb_define_class("CZookeeper", rb_cObject);
|
417
417
|
|
418
418
|
#define DEFINE_METHOD(method, args) { \
|
419
|
-
rb_define_method(
|
419
|
+
rb_define_method(Zookeeper, #method, method_ ## method, args); }
|
420
420
|
|
421
421
|
DEFINE_METHOD(initialize, 1);
|
422
422
|
DEFINE_METHOD(get_children, 1);
|
@@ -443,10 +443,10 @@ void Init_zookeeper_c() {
|
|
443
443
|
DEFINE_METHOD(state, 0);
|
444
444
|
DEFINE_METHOD(zerror, 1);
|
445
445
|
|
446
|
-
eNoNode = rb_define_class_under(
|
447
|
-
eBadVersion = rb_define_class_under(
|
446
|
+
eNoNode = rb_define_class_under(Zookeeper, "NoNodeError", rb_eRuntimeError);
|
447
|
+
eBadVersion = rb_define_class_under(Zookeeper, "BadVersionError", rb_eRuntimeError);
|
448
448
|
|
449
|
-
#define EXPORT_CONST(x) { rb_define_const(
|
449
|
+
#define EXPORT_CONST(x) { rb_define_const(Zookeeper, #x, INT2FIX(x)); }
|
450
450
|
|
451
451
|
/* create flags */
|
452
452
|
EXPORT_CONST(ZOO_EPHEMERAL);
|
data/lib/zookeeper.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Ruby wrapper for the
|
1
|
+
# Ruby wrapper for the Zookeeper C API
|
2
2
|
# Phillip Pearson <pp@myelin.co.nz>
|
3
3
|
|
4
4
|
require 'zookeeper_c'
|
@@ -10,7 +10,7 @@ class ZkStat
|
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
class
|
13
|
+
class Zookeeper < CZookeeper
|
14
14
|
def initialize(host)
|
15
15
|
super(host)
|
16
16
|
@watchers = {} # path => [ block, block, ... ]
|
@@ -23,7 +23,7 @@ class ZooKeeper < CZooKeeper
|
|
23
23
|
|
24
24
|
def stat(path, &blk)
|
25
25
|
exists(path, &blk)
|
26
|
-
rescue
|
26
|
+
rescue Zookeeper::NoNodeError
|
27
27
|
nil
|
28
28
|
end
|
29
29
|
|
@@ -37,7 +37,7 @@ class ZooKeeper < CZooKeeper
|
|
37
37
|
create(path, "lock node", 0) unless stat(path)
|
38
38
|
|
39
39
|
# attempt to obtain the lock
|
40
|
-
realpath = create("#{path}/lock-", value,
|
40
|
+
realpath = create("#{path}/lock-", value, Zookeeper::ZOO_EPHEMERAL | Zookeeper::ZOO_SEQUENCE)
|
41
41
|
#puts "created lock node #{realpath}"
|
42
42
|
|
43
43
|
# see if we got it
|
data/test/test_basic.rb
CHANGED
@@ -2,7 +2,7 @@ HERE = File.expand_path(File.dirname(__FILE__))
|
|
2
2
|
|
3
3
|
require "#{HERE}/../lib/zookeeper"
|
4
4
|
|
5
|
-
z =
|
5
|
+
z = Zookeeper.new("localhost:2181")
|
6
6
|
|
7
7
|
puts "root: #{z.get_children("/").inspect}"
|
8
8
|
|
@@ -35,7 +35,7 @@ puts "delete: #{z.delete(path, stat.version).inspect}"
|
|
35
35
|
begin
|
36
36
|
puts "exists? #{z.exists(path)}"
|
37
37
|
raise Exception, "it shouldn't exist"
|
38
|
-
rescue
|
38
|
+
rescue Zookeeper::NoNodeError
|
39
39
|
puts "doesn't exist - good, because we just deleted it!"
|
40
40
|
end
|
41
41
|
|
data/zookeeper.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{zookeeper}
|
5
|
-
s.version = "0.2"
|
5
|
+
s.version = "0.2.1"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Phillip Pearson, Eric Maland, Evan Weaver"]
|
9
9
|
s.cert_chain = ["/Users/eweaver/p/configuration/gem_certificates/evan_weaver-original-public_cert.pem"]
|
10
10
|
s.date = %q{2010-03-02}
|
11
|
-
s.description = %q{
|
11
|
+
s.description = %q{An interface to the Zookeeper distributed configuration server.}
|
12
12
|
s.email = %q{}
|
13
13
|
s.extensions = ["ext/extconf.rb"]
|
14
|
-
s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README", "ext/
|
14
|
+
s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README", "ext/zookeeper_c.c", "lib/zookeeper.rb"]
|
15
15
|
s.files = ["CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "ext/extconf.rb", "ext/zkc-3.2.2.tar.gz", "ext/zookeeper_c.c", "lib/zookeeper.rb", "test/test_basic.rb", "zookeeper.gemspec"]
|
16
16
|
s.homepage = %q{http://blog.evanweaver.com/files/doc/fauna/zookeeper/}
|
17
17
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Zookeeper", "--main", "README"]
|
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.rubyforge_project = %q{fauna}
|
20
20
|
s.rubygems_version = %q{1.3.5}
|
21
21
|
s.signing_key = %q{/Users/eweaver/p/configuration/gem_certificates/evan_weaver-original-private_key.pem}
|
22
|
-
s.summary = %q{
|
22
|
+
s.summary = %q{An interface to the Zookeeper distributed configuration server.}
|
23
23
|
s.test_files = ["test/test_basic.rb"]
|
24
24
|
|
25
25
|
if s.respond_to? :specification_version then
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zookeeper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Phillip Pearson, Eric Maland, Evan Weaver
|
@@ -34,7 +34,7 @@ date: 2010-03-02 00:00:00 -08:00
|
|
34
34
|
default_executable:
|
35
35
|
dependencies: []
|
36
36
|
|
37
|
-
description:
|
37
|
+
description: An interface to the Zookeeper distributed configuration server.
|
38
38
|
email: ""
|
39
39
|
executables: []
|
40
40
|
|
@@ -44,8 +44,6 @@ extra_rdoc_files:
|
|
44
44
|
- CHANGELOG
|
45
45
|
- LICENSE
|
46
46
|
- README
|
47
|
-
- ext/extconf.rb
|
48
|
-
- ext/zkc-3.2.2.tar.gz
|
49
47
|
- ext/zookeeper_c.c
|
50
48
|
- lib/zookeeper.rb
|
51
49
|
files:
|
@@ -93,6 +91,6 @@ rubyforge_project: fauna
|
|
93
91
|
rubygems_version: 1.3.5
|
94
92
|
signing_key:
|
95
93
|
specification_version: 3
|
96
|
-
summary:
|
94
|
+
summary: An interface to the Zookeeper distributed configuration server.
|
97
95
|
test_files:
|
98
96
|
- test/test_basic.rb
|
metadata.gz.sig
CHANGED
Binary file
|