-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/5086/
-----------------------------------------------------------
(Updated Sept. 14, 2012, 12:07 a.m.)
Review request for bookkeeper.
Changes
-------
update the patch to provide a client level subscription listener rather than a
per-subscription listener.
Description
-------
In some case, we need to hedwig-client as proxy server to provide messaging
service to other users.
client -> proxy server 1 -> hedwig
\> proxy server 2 />
when client would connect to either proxy server to receive messages, the proxy
server would setup subscription channel to hedwig server.
we just want client to be simple, so when the channel between client and proxy
server is broken, client will try to connect to proxy servers thru VIP. it
might connect to other proxy server. for example, first time client connects to
proxy server 1, but the client found the connection is broken, it connects to
proxy server 2. when proxy server 2 tried to setup subscription channel to
hedwig, hedwig found that this subscription has existed before occupied by
proxy server 1.
the panic here is that proxy server 1 only disconnect old subscription channel
only when it detected the channel between client and itself is broken. The
detection might be delayed due to several reasons. so it might increment the
latency that messages are pushed to real client.
so we try to introduce a subscription mode called CREATE_OR_ATTACH_OR_KILL mode.
when a subscriber use this subscription mode, it would kill old existed
subscription channel. when using this subscription mode, we would turn off
auto-reconnect functionality in hedwig client and just tell client about the
channel disconnected event so client could do its logic when channel is
detected.
in order to provide some admin tool for admin guys to debug/operate, we provide
ADMIN mode. if a subscriber attach to a subscription using ADMIN mode, its
subscription channel would never be killed, then it is safe to guarantee admin
operations.
This addresses bug BOOKKEEPER-252.
https://issues.apache.org/jira/browse/BOOKKEEPER-252
Diffs (updated)
-----
hedwig-client/src/main/cpp/inc/hedwig/callback.h 8d47018
hedwig-client/src/main/cpp/inc/hedwig/subscribe.h 8ca5b2b
hedwig-client/src/main/cpp/lib/data.cpp 9c5fb37
hedwig-client/src/main/cpp/lib/subscriberimpl.h beba547
hedwig-client/src/main/cpp/lib/subscriberimpl.cpp 6d7506b
hedwig-client/src/main/cpp/test/subscribetest.cpp 6883867
hedwig-client/src/main/cpp/test/util.h 45a6db3
hedwig-client/src/main/java/org/apache/hedwig/client/api/Subscriber.java
880fff7
hedwig-client/src/main/java/org/apache/hedwig/client/netty/HedwigClientImpl.java
e3d46ca
hedwig-client/src/main/java/org/apache/hedwig/client/netty/HedwigSubscriber.java
5bcf786
hedwig-client/src/main/java/org/apache/hedwig/client/netty/ResponseHandler.java
075705a
hedwig-client/src/main/java/org/apache/hedwig/util/SubscriptionListener.java
PRE-CREATION
hedwig-protocol/src/main/java/org/apache/hedwig/protocol/PubSubProtocol.java
723eb26
hedwig-protocol/src/main/protobuf/PubSubProtocol.proto 7645c5e
hedwig-server/src/main/java/org/apache/hedwig/admin/console/HedwigConsole.java
7d8e22b
hedwig-server/src/main/java/org/apache/hedwig/server/delivery/FIFODeliveryManager.java
b9125ca
hedwig-server/src/main/java/org/apache/hedwig/server/handlers/SubscribeHandler.java
1ad9ce1
hedwig-server/src/main/java/org/apache/hedwig/server/netty/PubSubServer.java
7220e23
hedwig-server/src/main/java/org/apache/hedwig/server/subscriptions/AbstractSubscriptionManager.java
496817f
hedwig-server/src/main/java/org/apache/hedwig/server/subscriptions/InMemorySubscriptionManager.java
ed04845
hedwig-server/src/main/java/org/apache/hedwig/server/subscriptions/MMSubscriptionManager.java
b7e22b5
hedwig-server/src/test/java/org/apache/hedwig/client/TestPubSubClient.java
2297c56
hedwig-server/src/test/java/org/apache/hedwig/server/PubSubServerStandAloneTestBase.java
8a61223
hedwig-server/src/test/java/org/apache/hedwig/server/handlers/TestSubUnsubHandler.java
5b53f24
hedwig-server/src/test/java/org/apache/hedwig/server/subscriptions/StubSubscriptionManager.java
a9df6a5
hedwig-server/src/test/java/org/apache/hedwig/server/subscriptions/TestMMSubscriptionManager.java
e06c473
Diff: https://reviews.apache.org/r/5086/diff/
Testing
-------
Thanks,
Sijie Guo