zookeeper 1.4.9-java → 1.5.1-java
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 +5 -13
- data/.github/workflows/build.yml +55 -0
- data/CHANGELOG +20 -0
- data/Gemfile +1 -1
- data/README.markdown +5 -28
- data/Rakefile +5 -5
- data/ext/c_zookeeper.rb +16 -16
- data/ext/extconf.rb +9 -4
- data/ext/generate_gvl_code.rb +0 -0
- data/ext/patches/zkc-3.4.5-buffer-overflow.patch +11 -0
- data/ext/patches/zkc-3.4.5-config.patch +5454 -0
- data/ext/patches/zkc-3.4.5-fetch-and-add.patch +16 -0
- data/ext/patches/zkc-3.4.5-out-of-order-ping.patch +163 -0
- data/ext/zkrb.c +25 -11
- data/java/java_base.rb +2 -4
- data/lib/zookeeper/version.rb +1 -1
- data/scripts/upgrade-1.0-sed-alike.rb +0 -0
- data/spec/forked_connection_spec.rb +3 -5
- data/spec/shared/connection_examples.rb +5 -1
- data/spec/support/10_spawn_zookeeper.rb +0 -4
- data/zookeeper.gemspec +10 -2
- data/zoomonkey/duplicates +0 -0
- data/zoomonkey/zoomonkey.rb +0 -0
- metadata +28 -28
- data/.travis.yml +0 -37
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
diff -ur zkc-3.4.5-orig/c/src/mt_adaptor.c zkc-3.4.5/c/src/mt_adaptor.c
|
|
2
|
+
--- zkc-3.4.5-orig/c/src/mt_adaptor.c 2012-09-30 10:53:32.000000000 -0700
|
|
3
|
+
+++ zkc-3.4.5/c/src/mt_adaptor.c 2016-09-07 16:55:13.787553837 -0700
|
|
4
|
+
@@ -484,11 +484,7 @@
|
|
5
|
+
{
|
|
6
|
+
#ifndef WIN32
|
|
7
|
+
int32_t result;
|
|
8
|
+
- asm __volatile__(
|
|
9
|
+
- "lock xaddl %0,%1\n"
|
|
10
|
+
- : "=r"(result), "=m"(*(int *)operand)
|
|
11
|
+
- : "0"(incr)
|
|
12
|
+
- : "memory");
|
|
13
|
+
+ result = __sync_fetch_and_add(operand, incr);
|
|
14
|
+
return result;
|
|
15
|
+
#else
|
|
16
|
+
volatile int32_t result;
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
diff --git zkc-3.4.5-orig/c/src/zookeeper.c zkc-3.4.5/c/src/zookeeper.c
|
|
2
|
+
index de58c62..2347ff4 100644
|
|
3
|
+
--- zkc-3.4.5-orig/c/src/zookeeper.c
|
|
4
|
+
+++ zkc-3.4.5/c/src/zookeeper.c
|
|
5
|
+
@@ -1167,25 +1167,20 @@ void free_completions(zhandle_t *zh,int callCompletion,int reason)
|
|
6
|
+
zh->outstanding_sync--;
|
|
7
|
+
destroy_completion_entry(cptr);
|
|
8
|
+
} else if (callCompletion) {
|
|
9
|
+
- if(cptr->xid == PING_XID){
|
|
10
|
+
- // Nothing to do with a ping response
|
|
11
|
+
- destroy_completion_entry(cptr);
|
|
12
|
+
- } else {
|
|
13
|
+
- // Fake the response
|
|
14
|
+
- buffer_list_t *bptr;
|
|
15
|
+
- h.xid = cptr->xid;
|
|
16
|
+
- h.zxid = -1;
|
|
17
|
+
- h.err = reason;
|
|
18
|
+
- oa = create_buffer_oarchive();
|
|
19
|
+
- serialize_ReplyHeader(oa, "header", &h);
|
|
20
|
+
- bptr = calloc(sizeof(*bptr), 1);
|
|
21
|
+
- assert(bptr);
|
|
22
|
+
- bptr->len = get_buffer_len(oa);
|
|
23
|
+
- bptr->buffer = get_buffer(oa);
|
|
24
|
+
- close_buffer_oarchive(&oa, 0);
|
|
25
|
+
- cptr->buffer = bptr;
|
|
26
|
+
- queue_completion(&zh->completions_to_process, cptr, 0);
|
|
27
|
+
- }
|
|
28
|
+
+ // Fake the response
|
|
29
|
+
+ buffer_list_t *bptr;
|
|
30
|
+
+ h.xid = cptr->xid;
|
|
31
|
+
+ h.zxid = -1;
|
|
32
|
+
+ h.err = reason;
|
|
33
|
+
+ oa = create_buffer_oarchive();
|
|
34
|
+
+ serialize_ReplyHeader(oa, "header", &h);
|
|
35
|
+
+ bptr = calloc(sizeof(*bptr), 1);
|
|
36
|
+
+ assert(bptr);
|
|
37
|
+
+ bptr->len = get_buffer_len(oa);
|
|
38
|
+
+ bptr->buffer = get_buffer(oa);
|
|
39
|
+
+ close_buffer_oarchive(&oa, 0);
|
|
40
|
+
+ cptr->buffer = bptr;
|
|
41
|
+
+ queue_completion(&zh->completions_to_process, cptr, 0);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
a_list.completion = NULL;
|
|
45
|
+
@@ -1526,7 +1521,6 @@ static struct timeval get_timeval(int interval)
|
|
46
|
+
rc = serialize_RequestHeader(oa, "header", &h);
|
|
47
|
+
enter_critical(zh);
|
|
48
|
+
gettimeofday(&zh->last_ping, 0);
|
|
49
|
+
- rc = rc < 0 ? rc : add_void_completion(zh, h.xid, 0, 0);
|
|
50
|
+
rc = rc < 0 ? rc : queue_buffer_bytes(&zh->to_send, get_buffer(oa),
|
|
51
|
+
get_buffer_len(oa));
|
|
52
|
+
leave_critical(zh);
|
|
53
|
+
@@ -2063,12 +2057,8 @@ static void deserialize_response(int type, int xid, int failed, int rc, completi
|
|
54
|
+
case COMPLETION_VOID:
|
|
55
|
+
LOG_DEBUG(("Calling COMPLETION_VOID for xid=%#x failed=%d rc=%d",
|
|
56
|
+
cptr->xid, failed, rc));
|
|
57
|
+
- if (xid == PING_XID) {
|
|
58
|
+
- // We want to skip the ping
|
|
59
|
+
- } else {
|
|
60
|
+
- assert(cptr->c.void_result);
|
|
61
|
+
- cptr->c.void_result(rc, cptr->data);
|
|
62
|
+
- }
|
|
63
|
+
+ assert(cptr->c.void_result);
|
|
64
|
+
+ cptr->c.void_result(rc, cptr->data);
|
|
65
|
+
break;
|
|
66
|
+
case COMPLETION_MULTI:
|
|
67
|
+
LOG_DEBUG(("Calling COMPLETION_MULTI for xid=%#x failed=%d rc=%d",
|
|
68
|
+
@@ -2184,7 +2174,15 @@ int zookeeper_process(zhandle_t *zh, int events)
|
|
69
|
+
// fprintf(stderr, "Got %#x for %#x\n", hdr.zxid, hdr.xid);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
- if (hdr.xid == WATCHER_EVENT_XID) {
|
|
73
|
+
+ if (hdr.xid == PING_XID) {
|
|
74
|
+
+ // Ping replies can arrive out-of-order
|
|
75
|
+
+ int elapsed = 0;
|
|
76
|
+
+ struct timeval now;
|
|
77
|
+
+ gettimeofday(&now, 0);
|
|
78
|
+
+ elapsed = calculate_interval(&zh->last_ping, &now);
|
|
79
|
+
+ LOG_DEBUG(("Got ping response in %d ms", elapsed));
|
|
80
|
+
+ free_buffer(bptr);
|
|
81
|
+
+ } else if (hdr.xid == WATCHER_EVENT_XID) {
|
|
82
|
+
struct WatcherEvent evt;
|
|
83
|
+
int type = 0;
|
|
84
|
+
char *path = NULL;
|
|
85
|
+
@@ -2250,22 +2248,9 @@ int zookeeper_process(zhandle_t *zh, int events)
|
|
86
|
+
activateWatcher(zh, cptr->watcher, rc);
|
|
87
|
+
|
|
88
|
+
if (cptr->c.void_result != SYNCHRONOUS_MARKER) {
|
|
89
|
+
- if(hdr.xid == PING_XID){
|
|
90
|
+
- int elapsed = 0;
|
|
91
|
+
- struct timeval now;
|
|
92
|
+
- gettimeofday(&now, 0);
|
|
93
|
+
- elapsed = calculate_interval(&zh->last_ping, &now);
|
|
94
|
+
- LOG_DEBUG(("Got ping response in %d ms", elapsed));
|
|
95
|
+
-
|
|
96
|
+
- // Nothing to do with a ping response
|
|
97
|
+
- free_buffer(bptr);
|
|
98
|
+
- destroy_completion_entry(cptr);
|
|
99
|
+
- } else {
|
|
100
|
+
- LOG_DEBUG(("Queueing asynchronous response"));
|
|
101
|
+
-
|
|
102
|
+
- cptr->buffer = bptr;
|
|
103
|
+
- queue_completion(&zh->completions_to_process, cptr, 0);
|
|
104
|
+
- }
|
|
105
|
+
+ LOG_DEBUG(("Queueing asynchronous response"));
|
|
106
|
+
+ cptr->buffer = bptr;
|
|
107
|
+
+ queue_completion(&zh->completions_to_process, cptr, 0);
|
|
108
|
+
} else {
|
|
109
|
+
struct sync_completion
|
|
110
|
+
*sc = (struct sync_completion*)cptr->data;
|
|
111
|
+
diff --git zkc-3.4.5-orig/c/tests/TestOperations.cc zkc-3.4.5/c/tests/TestOperations.cc
|
|
112
|
+
index b0370e9..27d9270 100644
|
|
113
|
+
--- zkc-3.4.5-orig/c/tests/TestOperations.cc
|
|
114
|
+
+++ zkc-3.4.5/c/tests/TestOperations.cc
|
|
115
|
+
@@ -29,6 +29,7 @@ class Zookeeper_operations : public CPPUNIT_NS::TestFixture
|
|
116
|
+
CPPUNIT_TEST_SUITE(Zookeeper_operations);
|
|
117
|
+
#ifndef THREADED
|
|
118
|
+
CPPUNIT_TEST(testPing);
|
|
119
|
+
+ CPPUNIT_TEST(testUnsolicitedPing);
|
|
120
|
+
CPPUNIT_TEST(testTimeoutCausedByWatches1);
|
|
121
|
+
CPPUNIT_TEST(testTimeoutCausedByWatches2);
|
|
122
|
+
#else
|
|
123
|
+
@@ -305,6 +306,40 @@ public:
|
|
124
|
+
CPPUNIT_ASSERT_EQUAL(1,zkServer.pingCount_);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
+ // ZOOKEEPER-2253: Permit unsolicited pings
|
|
128
|
+
+ void testUnsolicitedPing()
|
|
129
|
+
+ {
|
|
130
|
+
+ const int TIMEOUT=9; // timeout in secs
|
|
131
|
+
+ Mock_gettimeofday timeMock;
|
|
132
|
+
+ PingCountingServer zkServer;
|
|
133
|
+
+ // must call zookeeper_close() while all the mocks are in scope
|
|
134
|
+
+ CloseFinally guard(&zh);
|
|
135
|
+
+
|
|
136
|
+
+ // receive timeout is in milliseconds
|
|
137
|
+
+ zh=zookeeper_init("localhost:1234",watcher,TIMEOUT*1000,TEST_CLIENT_ID,0,0);
|
|
138
|
+
+ CPPUNIT_ASSERT(zh!=0);
|
|
139
|
+
+ // simulate connected state
|
|
140
|
+
+ forceConnected(zh);
|
|
141
|
+
+
|
|
142
|
+
+ int fd=0;
|
|
143
|
+
+ int interest=0;
|
|
144
|
+
+ timeval tv;
|
|
145
|
+
+
|
|
146
|
+
+ int rc=zookeeper_interest(zh,&fd,&interest,&tv);
|
|
147
|
+
+ CPPUNIT_ASSERT_EQUAL((int)ZOK,rc);
|
|
148
|
+
+
|
|
149
|
+
+ // verify no ping sent
|
|
150
|
+
+ CPPUNIT_ASSERT(zkServer.pingCount_==0);
|
|
151
|
+
+
|
|
152
|
+
+ // we're going to receive a unsolicited PING response; ensure
|
|
153
|
+
+ // that the client has updated its last_recv timestamp
|
|
154
|
+
+ timeMock.tick(tv);
|
|
155
|
+
+ zkServer.addRecvResponse(new PingResponse);
|
|
156
|
+
+ rc=zookeeper_process(zh,interest);
|
|
157
|
+
+ CPPUNIT_ASSERT_EQUAL((int)ZOK,rc);
|
|
158
|
+
+ CPPUNIT_ASSERT(timeMock==zh->last_recv);
|
|
159
|
+
+ }
|
|
160
|
+
+
|
|
161
|
+
// simulate a watch arriving right before a ping is due
|
|
162
|
+
// assert the ping is sent nevertheless
|
|
163
|
+
void testTimeoutCausedByWatches1()
|
data/ext/zkrb.c
CHANGED
|
@@ -73,6 +73,17 @@
|
|
|
73
73
|
#include "ruby/io.h"
|
|
74
74
|
#endif
|
|
75
75
|
|
|
76
|
+
#ifndef HAVE_RB_THREAD_FD_SELECT
|
|
77
|
+
#define rb_fdset_t fd_set
|
|
78
|
+
#define rb_fd_isset(n, f) FD_ISSET(n, f)
|
|
79
|
+
#define rb_fd_init(f) FD_ZERO(f)
|
|
80
|
+
#define rb_fd_zero(f) FD_ZERO(f)
|
|
81
|
+
#define rb_fd_set(n, f) FD_SET(n, f)
|
|
82
|
+
#define rb_fd_clr(n, f) FD_CLR(n, f)
|
|
83
|
+
#define rb_fd_term(f)
|
|
84
|
+
#define rb_thread_fd_select rb_thread_select
|
|
85
|
+
#endif
|
|
86
|
+
|
|
76
87
|
#include "zookeeper/zookeeper.h"
|
|
77
88
|
#include <errno.h>
|
|
78
89
|
#include <stdio.h>
|
|
@@ -787,8 +798,8 @@ inline static int get_self_pipe_read_fd(VALUE self) {
|
|
|
787
798
|
static VALUE method_zkrb_iterate_event_loop(VALUE self) {
|
|
788
799
|
FETCH_DATA_PTR(self, zk);
|
|
789
800
|
|
|
790
|
-
|
|
791
|
-
|
|
801
|
+
rb_fdset_t rfds, wfds, efds;
|
|
802
|
+
rb_fd_init(&rfds); rb_fd_init(&wfds); rb_fd_init(&efds);
|
|
792
803
|
|
|
793
804
|
int fd = 0, interest = 0, events = 0, rc = 0, maxfd = 0, irc = 0, prc = 0;
|
|
794
805
|
struct timeval tv;
|
|
@@ -797,14 +808,14 @@ static VALUE method_zkrb_iterate_event_loop(VALUE self) {
|
|
|
797
808
|
|
|
798
809
|
if (fd != -1) {
|
|
799
810
|
if (interest & ZOOKEEPER_READ) {
|
|
800
|
-
|
|
811
|
+
rb_fd_set(fd, &rfds);
|
|
801
812
|
} else {
|
|
802
|
-
|
|
813
|
+
rb_fd_clr(fd, &rfds);
|
|
803
814
|
}
|
|
804
815
|
if (interest & ZOOKEEPER_WRITE) {
|
|
805
|
-
|
|
816
|
+
rb_fd_set(fd, &wfds);
|
|
806
817
|
} else {
|
|
807
|
-
|
|
818
|
+
rb_fd_clr(fd, &wfds);
|
|
808
819
|
}
|
|
809
820
|
} else {
|
|
810
821
|
fd = 0;
|
|
@@ -813,22 +824,22 @@ static VALUE method_zkrb_iterate_event_loop(VALUE self) {
|
|
|
813
824
|
// add our self-pipe to the read set, allow us to wake up in case our attention is needed
|
|
814
825
|
int pipe_r_fd = get_self_pipe_read_fd(self);
|
|
815
826
|
|
|
816
|
-
|
|
827
|
+
rb_fd_set(pipe_r_fd, &rfds);
|
|
817
828
|
|
|
818
829
|
maxfd = (pipe_r_fd > fd) ? pipe_r_fd : fd;
|
|
819
830
|
|
|
820
|
-
rc =
|
|
831
|
+
rc = rb_thread_fd_select(maxfd+1, &rfds, &wfds, &efds, &tv);
|
|
821
832
|
|
|
822
833
|
if (rc > 0) {
|
|
823
|
-
if (
|
|
834
|
+
if (rb_fd_isset(fd, &rfds)) {
|
|
824
835
|
events |= ZOOKEEPER_READ;
|
|
825
836
|
}
|
|
826
|
-
if (
|
|
837
|
+
if (rb_fd_isset(fd, &wfds)) {
|
|
827
838
|
events |= ZOOKEEPER_WRITE;
|
|
828
839
|
}
|
|
829
840
|
|
|
830
841
|
// we got woken up by the self-pipe
|
|
831
|
-
if (
|
|
842
|
+
if (rb_fd_isset(pipe_r_fd, &rfds)) {
|
|
832
843
|
// one event has awoken us, so we clear one event from the pipe
|
|
833
844
|
char b[1];
|
|
834
845
|
|
|
@@ -853,6 +864,9 @@ static VALUE method_zkrb_iterate_event_loop(VALUE self) {
|
|
|
853
864
|
prc, interest, fd, pipe_r_fd, maxfd, irc, tv.tv_sec + (tv.tv_usec/ 1000.0 / 1000.0));
|
|
854
865
|
}
|
|
855
866
|
|
|
867
|
+
rb_fd_term(&rfds);
|
|
868
|
+
rb_fd_term(&wfds);
|
|
869
|
+
rb_fd_term(&efds);
|
|
856
870
|
return INT2FIX(prc);
|
|
857
871
|
}
|
|
858
872
|
|
data/java/java_base.rb
CHANGED
|
@@ -183,13 +183,11 @@ class JavaBase
|
|
|
183
183
|
attr_reader :event_queue
|
|
184
184
|
|
|
185
185
|
def reopen(timeout=10, watcher=nil, opts = {})
|
|
186
|
-
# watcher ||= @default_watcher
|
|
187
|
-
|
|
188
186
|
@mutex.synchronize do
|
|
189
187
|
@req_registry.clear_watchers!
|
|
190
188
|
|
|
191
189
|
replace_jzk!(opts)
|
|
192
|
-
wait_until_connected
|
|
190
|
+
wait_until_connected(timeout)
|
|
193
191
|
end
|
|
194
192
|
|
|
195
193
|
state
|
|
@@ -490,7 +488,7 @@ class JavaBase
|
|
|
490
488
|
|
|
491
489
|
def replace_jzk!(opts = {})
|
|
492
490
|
orig_jzk = @jzk
|
|
493
|
-
if opts.has_key?(:session_id) && opts.has_key(:session_passwd)
|
|
491
|
+
if opts.has_key?(:session_id) && opts.has_key?(:session_passwd)
|
|
494
492
|
@jzk = JZK::ZooKeeper.new(@host, DEFAULT_SESSION_TIMEOUT, JavaCB::WatcherCallback.new(event_queue, :client => self), opts.fetch(:session_id), opts.fetch(:session_passwd).to_java_bytes)
|
|
495
493
|
else
|
|
496
494
|
@jzk = JZK::ZooKeeper.new(@host, DEFAULT_SESSION_TIMEOUT, JavaCB::WatcherCallback.new(event_queue, :client => self))
|
data/lib/zookeeper/version.rb
CHANGED
|
File without changes
|
|
@@ -4,7 +4,7 @@ unless defined?(::JRUBY_VERSION)
|
|
|
4
4
|
describe %[forked connection] do
|
|
5
5
|
let(:path) { "/_zktest_" }
|
|
6
6
|
let(:pids_root) { "#{path}/pids" }
|
|
7
|
-
let(:data) { "underpants" }
|
|
7
|
+
let(:data) { "underpants" }
|
|
8
8
|
let(:connection_string) { Zookeeper.default_cnx_str }
|
|
9
9
|
|
|
10
10
|
def process_alive?(pid)
|
|
@@ -15,7 +15,7 @@ unless defined?(::JRUBY_VERSION)
|
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
LBORDER = ('-' * 35) << '< '
|
|
18
|
-
RBORDER = ' >' << ('-' * 35)
|
|
18
|
+
RBORDER = ' >' << ('-' * 35)
|
|
19
19
|
|
|
20
20
|
def mark(thing)
|
|
21
21
|
logger << "\n#{LBORDER}#{thing}#{RBORDER}\n\n"
|
|
@@ -25,8 +25,6 @@ unless defined?(::JRUBY_VERSION)
|
|
|
25
25
|
mark "BEFORE: START"
|
|
26
26
|
if defined?(::Rubinius)
|
|
27
27
|
pending("this test is currently broken in rbx")
|
|
28
|
-
# elsif ENV['TRAVIS']
|
|
29
|
-
# pending("this test is currently hanging in travis")
|
|
30
28
|
else
|
|
31
29
|
@zk = Zookeeper.new(connection_string)
|
|
32
30
|
rm_rf(@zk, path)
|
|
@@ -105,7 +103,7 @@ unless defined?(::JRUBY_VERSION)
|
|
|
105
103
|
@zk.resume_after_fork_in_parent
|
|
106
104
|
|
|
107
105
|
event_waiter_th = Thread.new do
|
|
108
|
-
@latch.await(5) unless @event
|
|
106
|
+
@latch.await(5) unless @event
|
|
109
107
|
@event
|
|
110
108
|
end
|
|
111
109
|
|
|
@@ -1051,7 +1051,11 @@ shared_examples_for "connection" do
|
|
|
1051
1051
|
zk.close
|
|
1052
1052
|
end
|
|
1053
1053
|
|
|
1054
|
-
|
|
1054
|
+
begin
|
|
1055
|
+
zk.stat(:path => path, :callback => evil_cb)
|
|
1056
|
+
rescue IOError
|
|
1057
|
+
# captures flaky IOError: stream closed in another thread
|
|
1058
|
+
end
|
|
1055
1059
|
|
|
1056
1060
|
wait_until { zk.closed? }
|
|
1057
1061
|
zk.should be_closed
|
data/zookeeper.gemspec
CHANGED
|
@@ -6,13 +6,21 @@ Gem::Specification.new do |s|
|
|
|
6
6
|
s.name = 'zookeeper'
|
|
7
7
|
s.version = Zookeeper::VERSION
|
|
8
8
|
|
|
9
|
-
s.authors = [
|
|
9
|
+
s.authors = [
|
|
10
|
+
"Phillip Pearson",
|
|
11
|
+
"Eric Maland",
|
|
12
|
+
"Evan Weaver",
|
|
13
|
+
"Brian Wickman",
|
|
14
|
+
"Neil Conway",
|
|
15
|
+
"Jonathan D. Simms",
|
|
16
|
+
"Mal McKay",
|
|
17
|
+
]
|
|
10
18
|
s.email = ["slyphon@gmail.com"]
|
|
11
19
|
s.summary = %q{Apache ZooKeeper driver for Rubies}
|
|
12
20
|
s.description = <<-EOS
|
|
13
21
|
A low-level multi-Ruby wrapper around the ZooKeeper API bindings. For a
|
|
14
22
|
friendlier interface, see http://github.com/slyphon/zk. Currently supported:
|
|
15
|
-
MRI: {
|
|
23
|
+
MRI: {2.5, 2.6, 2.7, 3.0}, JRuby: ~> 9.2.x.x
|
|
16
24
|
|
|
17
25
|
This library uses version #{Zookeeper::DRIVER_VERSION} of zookeeper bindings.
|
|
18
26
|
|
data/zoomonkey/duplicates
CHANGED
|
File without changes
|
data/zoomonkey/zoomonkey.rb
CHANGED
|
File without changes
|
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: 1.
|
|
4
|
+
version: 1.5.1
|
|
5
5
|
platform: java
|
|
6
6
|
authors:
|
|
7
7
|
- Phillip Pearson
|
|
@@ -10,64 +10,60 @@ authors:
|
|
|
10
10
|
- Brian Wickman
|
|
11
11
|
- Neil Conway
|
|
12
12
|
- Jonathan D. Simms
|
|
13
|
-
|
|
13
|
+
- Mal McKay
|
|
14
|
+
autorequire:
|
|
14
15
|
bindir: bin
|
|
15
16
|
cert_chain: []
|
|
16
|
-
date:
|
|
17
|
+
date: 2021-11-16 00:00:00.000000000 Z
|
|
17
18
|
dependencies:
|
|
18
19
|
- !ruby/object:Gem::Dependency
|
|
19
|
-
name: slyphon-log4j
|
|
20
20
|
requirement: !ruby/object:Gem::Requirement
|
|
21
21
|
requirements:
|
|
22
22
|
- - '='
|
|
23
23
|
- !ruby/object:Gem::Version
|
|
24
24
|
version: 1.2.15
|
|
25
|
-
|
|
25
|
+
name: slyphon-log4j
|
|
26
26
|
prerelease: false
|
|
27
|
+
type: :runtime
|
|
27
28
|
version_requirements: !ruby/object:Gem::Requirement
|
|
28
29
|
requirements:
|
|
29
30
|
- - '='
|
|
30
31
|
- !ruby/object:Gem::Version
|
|
31
32
|
version: 1.2.15
|
|
32
33
|
- !ruby/object:Gem::Dependency
|
|
33
|
-
name: slyphon-zookeeper_jar
|
|
34
34
|
requirement: !ruby/object:Gem::Requirement
|
|
35
35
|
requirements:
|
|
36
36
|
- - '='
|
|
37
37
|
- !ruby/object:Gem::Version
|
|
38
38
|
version: 3.3.5
|
|
39
|
-
|
|
39
|
+
name: slyphon-zookeeper_jar
|
|
40
40
|
prerelease: false
|
|
41
|
+
type: :runtime
|
|
41
42
|
version_requirements: !ruby/object:Gem::Requirement
|
|
42
43
|
requirements:
|
|
43
44
|
- - '='
|
|
44
45
|
- !ruby/object:Gem::Version
|
|
45
46
|
version: 3.3.5
|
|
46
|
-
description:
|
|
47
|
-
For a
|
|
48
|
-
|
|
47
|
+
description: |+
|
|
48
|
+
A low-level multi-Ruby wrapper around the ZooKeeper API bindings. For a
|
|
49
49
|
friendlier interface, see http://github.com/slyphon/zk. Currently supported:
|
|
50
|
-
|
|
51
|
-
MRI: {1.8.7, 1.9.2, 1.9.3}, JRuby: ~> 1.6.7, Rubinius: 2.0.testing, REE 1.8.7.
|
|
52
|
-
|
|
50
|
+
MRI: {2.5, 2.6, 2.7, 3.0}, JRuby: ~> 9.2.x.x
|
|
53
51
|
|
|
54
52
|
This library uses version 3.4.5 of zookeeper bindings.
|
|
55
53
|
|
|
56
|
-
|
|
57
|
-
'
|
|
58
54
|
email:
|
|
59
55
|
- slyphon@gmail.com
|
|
60
56
|
executables: []
|
|
61
57
|
extensions: []
|
|
62
58
|
extra_rdoc_files: []
|
|
63
59
|
files:
|
|
64
|
-
- .ctags_paths
|
|
65
|
-
- .dotfiles/ruby-gemset
|
|
66
|
-
- .dotfiles/ruby-version
|
|
67
|
-
- .dotfiles/rvmrc
|
|
68
|
-
- .
|
|
69
|
-
- .
|
|
70
|
-
- .
|
|
60
|
+
- ".ctags_paths"
|
|
61
|
+
- ".dotfiles/ruby-gemset"
|
|
62
|
+
- ".dotfiles/ruby-version"
|
|
63
|
+
- ".dotfiles/rvmrc"
|
|
64
|
+
- ".github/workflows/build.yml"
|
|
65
|
+
- ".gitignore"
|
|
66
|
+
- ".gitmodules"
|
|
71
67
|
- CHANGELOG
|
|
72
68
|
- Gemfile
|
|
73
69
|
- Guardfile
|
|
@@ -87,7 +83,11 @@ files:
|
|
|
87
83
|
- ext/extconf.rb
|
|
88
84
|
- ext/generate_gvl_code.rb
|
|
89
85
|
- ext/patches/zkc-3.3.5-network.patch
|
|
86
|
+
- ext/patches/zkc-3.4.5-buffer-overflow.patch
|
|
87
|
+
- ext/patches/zkc-3.4.5-config.patch
|
|
88
|
+
- ext/patches/zkc-3.4.5-fetch-and-add.patch
|
|
90
89
|
- ext/patches/zkc-3.4.5-logging.patch
|
|
90
|
+
- ext/patches/zkc-3.4.5-out-of-order-ping.patch
|
|
91
91
|
- ext/patches/zkc-3.4.5-yosemite-htonl-fix.patch
|
|
92
92
|
- ext/zkc-3.4.5.tar.gz
|
|
93
93
|
- ext/zkrb.c
|
|
@@ -144,25 +144,25 @@ files:
|
|
|
144
144
|
homepage: https://github.com/slyphon/zookeeper
|
|
145
145
|
licenses: []
|
|
146
146
|
metadata: {}
|
|
147
|
-
post_install_message:
|
|
147
|
+
post_install_message:
|
|
148
148
|
rdoc_options: []
|
|
149
149
|
require_paths:
|
|
150
150
|
- lib
|
|
151
151
|
- java
|
|
152
152
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
153
153
|
requirements:
|
|
154
|
-
- -
|
|
154
|
+
- - ">="
|
|
155
155
|
- !ruby/object:Gem::Version
|
|
156
156
|
version: '0'
|
|
157
157
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
158
158
|
requirements:
|
|
159
|
-
- -
|
|
159
|
+
- - ">="
|
|
160
160
|
- !ruby/object:Gem::Version
|
|
161
161
|
version: '0'
|
|
162
162
|
requirements: []
|
|
163
|
-
rubyforge_project:
|
|
164
|
-
rubygems_version: 2.
|
|
165
|
-
signing_key:
|
|
163
|
+
rubyforge_project:
|
|
164
|
+
rubygems_version: 2.7.9
|
|
165
|
+
signing_key:
|
|
166
166
|
specification_version: 4
|
|
167
167
|
summary: Apache ZooKeeper driver for Rubies
|
|
168
168
|
test_files:
|
data/.travis.yml
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
notifications:
|
|
3
|
-
email:
|
|
4
|
-
- slyphon@gmail.com
|
|
5
|
-
- eric@5stops.com
|
|
6
|
-
|
|
7
|
-
# pull in releaseops submodule
|
|
8
|
-
before_install:
|
|
9
|
-
- git submodule update --init --recursive
|
|
10
|
-
|
|
11
|
-
env:
|
|
12
|
-
- SPAWN_ZOOKEEPER='true'
|
|
13
|
-
|
|
14
|
-
language: ruby
|
|
15
|
-
|
|
16
|
-
rvm:
|
|
17
|
-
- 1.9.3
|
|
18
|
-
- 1.9.2
|
|
19
|
-
- 1.8.7
|
|
20
|
-
- ree
|
|
21
|
-
- jruby-18mode
|
|
22
|
-
- jruby-19mode
|
|
23
|
-
- rbx-18mode
|
|
24
|
-
- rbx-19mode
|
|
25
|
-
- 2.0.0
|
|
26
|
-
matrix:
|
|
27
|
-
allow_failures:
|
|
28
|
-
- rvm: rbx-18mode
|
|
29
|
-
- rvm: rbx-19mode
|
|
30
|
-
|
|
31
|
-
bundler_args: --without development docs coverage
|
|
32
|
-
|
|
33
|
-
# blacklist
|
|
34
|
-
branches:
|
|
35
|
-
except:
|
|
36
|
-
# - 'dev/zookeeper-st'
|
|
37
|
-
|