You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by cm...@apache.org on 2011/02/15 19:47:11 UTC

svn commit: r1071012 - in /camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp: SmppConsumer.java SmppProducer.java

Author: cmueller
Date: Tue Feb 15 18:47:11 2011
New Revision: 1071012

URL: http://svn.apache.org/viewvc?rev=1071012&view=rev
Log:
CAMEL-3650: SMSC initiated unbind spawns exponential amounts of reconnect threads

Modified:
    camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConsumer.java
    camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppProducer.java

Modified: camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConsumer.java?rev=1071012&r1=1071011&r2=1071012&view=diff
==============================================================================
--- camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConsumer.java (original)
+++ camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConsumer.java Tue Feb 15 18:47:11 2011
@@ -200,10 +200,9 @@ public class SmppConsumer extends Defaul
 
     private void reconnect(final long initialReconnectDelay) {
         if (reconnectLock.tryLock()) {
-            new Thread() {
-                @Override
-                public void run() {
-                    try {
+            try {
+                Runnable r = new Runnable() {
+                    public void run() {
                         boolean reconnected = false;
                         
                         LOG.info("Schedule reconnect after " + initialReconnectDelay + " millis");
@@ -231,11 +230,17 @@ public class SmppConsumer extends Defaul
                         if (reconnected) {
                             LOG.info("Reconnected to " + getEndpoint().getConnectionString());                        
                         }
-                    } finally {
-                        reconnectLock.unlock();
                     }
-                }
-            }.start();            
+                };
+                
+                Thread t = new Thread(r);
+                t.start(); 
+                t.join();
+            } catch (InterruptedException e) {
+                // noop
+            }  finally {
+                reconnectLock.unlock();
+            }
         }
     }
 

Modified: camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppProducer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppProducer.java?rev=1071012&r1=1071011&r2=1071012&view=diff
==============================================================================
--- camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppProducer.java (original)
+++ camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppProducer.java Tue Feb 15 18:47:11 2011
@@ -188,10 +188,11 @@ public class SmppProducer extends Defaul
 
     private void reconnect(final long initialReconnectDelay) {
         if (reconnectLock.tryLock()) {
-            new Thread() {
-                @Override
-                public void run() {
-                    try {
+            try {
+                Runnable r = new Runnable() {
+                    public void run() {
+                        boolean reconnected = false;
+                        
                         LOG.info("Schedule reconnect after " + initialReconnectDelay + " millis");
                         try {
                             Thread.sleep(initialReconnectDelay);
@@ -203,6 +204,7 @@ public class SmppProducer extends Defaul
                             try {
                                 LOG.info("Trying to reconnect to " + getEndpoint().getConnectionString() + " - attempt #" + (++attempt) + "...");
                                 session = createSession();
+                                reconnected = true;
                             } catch (IOException e) {
                                 LOG.info("Failed to reconnect to " + getEndpoint().getConnectionString());
                                 closeSession(session);
@@ -212,12 +214,21 @@ public class SmppProducer extends Defaul
                                 }
                             }
                         }
-                        LOG.info("Reconnected to " + getEndpoint().getConnectionString());                        
-                    } finally {
-                        reconnectLock.unlock();
+                        
+                        if (reconnected) {
+                            LOG.info("Reconnected to " + getEndpoint().getConnectionString());                        
+                        }
                     }
-                }
-            }.start();            
+                };
+                
+                Thread t = new Thread(r);
+                t.start(); 
+                t.join();
+            } catch (InterruptedException e) {
+                // noop
+            }  finally {
+                reconnectLock.unlock();
+            }
         }
     }