-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/5086/
-----------------------------------------------------------

(Updated Sept. 14, 2012, 3:30 p.m.)


Review request for bookkeeper.


Changes
-------

addressed the comments and rebased to latest trunk.


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
 6730668 
  
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 
c0409be 
  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 
2cc450c 
  
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

Reply via email to