Author: ivank
Date: Tue Dec  4 17:27:35 2012
New Revision: 1417046

URL: http://svn.apache.org/viewvc?rev=1417046&view=rev
Log:
BOOKKEEPER-470: Possible infinite loop in simple.SubscribeReconnectCallback 
(sijie via ivank)

Modified:
    zookeeper/bookkeeper/trunk/CHANGES.txt
    
zookeeper/bookkeeper/trunk/hedwig-client/src/main/java/org/apache/hedwig/client/netty/impl/multiplex/ResubscribeCallback.java
    
zookeeper/bookkeeper/trunk/hedwig-client/src/main/java/org/apache/hedwig/client/netty/impl/simple/SubscribeReconnectCallback.java

Modified: zookeeper/bookkeeper/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/CHANGES.txt?rev=1417046&r1=1417045&r2=1417046&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/CHANGES.txt (original)
+++ zookeeper/bookkeeper/trunk/CHANGES.txt Tue Dec  4 17:27:35 2012
@@ -146,6 +146,8 @@ Trunk (unreleased changes)
 
         BOOKKEEPER-454: hedwig c++ tester script assumes sh is bash (ivank)
 
+        BOOKKEEPER-470: Possible infinite loop in 
simple.SubscribeReconnectCallback (sijie via ivank)
+
       hedwig-server:
 
         BOOKKEEPER-302: No more messages delivered when hub server scans 
messages over two ledgers. (sijie via ivank)

Modified: 
zookeeper/bookkeeper/trunk/hedwig-client/src/main/java/org/apache/hedwig/client/netty/impl/multiplex/ResubscribeCallback.java
URL: 
http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/hedwig-client/src/main/java/org/apache/hedwig/client/netty/impl/multiplex/ResubscribeCallback.java?rev=1417046&r1=1417045&r2=1417046&view=diff
==============================================================================
--- 
zookeeper/bookkeeper/trunk/hedwig-client/src/main/java/org/apache/hedwig/client/netty/impl/multiplex/ResubscribeCallback.java
 (original)
+++ 
zookeeper/bookkeeper/trunk/hedwig-client/src/main/java/org/apache/hedwig/client/netty/impl/multiplex/ResubscribeCallback.java
 Tue Dec  4 17:27:35 2012
@@ -82,7 +82,11 @@ class ResubscribeCallback implements Cal
         // a topic subscription has failed. So instead, we'll just keep
         // retrying in the background until success.
         logger.error("Resubscribe failed with error: " + 
exception.getMessage());
-        retrySubscribeRequest();
+        // we don't retry subscribe request is channel manager is closing
+        // otherwise it might overflow the stack.
+        if (!channelManager.isClosed()) {
+            retrySubscribeRequest();
+        }
     }
 
     private void retrySubscribeRequest() {

Modified: 
zookeeper/bookkeeper/trunk/hedwig-client/src/main/java/org/apache/hedwig/client/netty/impl/simple/SubscribeReconnectCallback.java
URL: 
http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/hedwig-client/src/main/java/org/apache/hedwig/client/netty/impl/simple/SubscribeReconnectCallback.java?rev=1417046&r1=1417045&r2=1417046&view=diff
==============================================================================
--- 
zookeeper/bookkeeper/trunk/hedwig-client/src/main/java/org/apache/hedwig/client/netty/impl/simple/SubscribeReconnectCallback.java
 (original)
+++ 
zookeeper/bookkeeper/trunk/hedwig-client/src/main/java/org/apache/hedwig/client/netty/impl/simple/SubscribeReconnectCallback.java
 Tue Dec  4 17:27:35 2012
@@ -84,7 +84,11 @@ class SubscribeReconnectCallback impleme
         // a topic subscription has failed. So instead, we'll just keep
         // retrying in the background until success.
         logger.error("Subscribe reconnect failed with error: ", exception);
-        retrySubscribeRequest();
+        // we don't retry subscribe request is channel manager is closing
+        // otherwise it might overflow the stack.
+        if (!channelManager.isClosed()) {
+            retrySubscribeRequest();
+        }
     }
 
     private void retrySubscribeRequest() {


Reply via email to