You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ea...@apache.org on 2015/06/10 19:11:49 UTC

svn commit: r1684716 - in /qpid/trunk/qpid: cpp/src/qpid/broker/SessionManager.cpp python/qpid/messaging/driver.py

Author: eallen
Date: Wed Jun 10 17:11:49 2015
New Revision: 1684716

URL: http://svn.apache.org/r1684716
Log:
QPID-6297: Python client should reconnect after network glitch

Modified:
    qpid/trunk/qpid/cpp/src/qpid/broker/SessionManager.cpp
    qpid/trunk/qpid/python/qpid/messaging/driver.py

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/SessionManager.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/SessionManager.cpp?rev=1684716&r1=1684715&r2=1684716&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/SessionManager.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/SessionManager.cpp Wed Jun 10 17:11:49 2015
@@ -47,11 +47,11 @@ SessionManager::~SessionManager() {
     detached.clear();           // Must clear before destructor as session dtor will call forget()
 }
 
-std::auto_ptr<SessionState>  SessionManager::attach(SessionHandler& h, const SessionId& id, bool/*force*/) {
+std::auto_ptr<SessionState>  SessionManager::attach(SessionHandler& h, const SessionId& id, bool force) {
     Mutex::ScopedLock l(lock);
     eraseExpired();             // Clean up expired table
     std::pair<Attached::iterator, bool> insert = attached.insert(id);
-    if (!insert.second)
+    if (!insert.second && !force)
         throw SessionBusyException(QPID_MSG("Session already attached: " << id));
     Detached::iterator i = std::find(detached.begin(), detached.end(), id);
     std::auto_ptr<SessionState> state;
@@ -62,7 +62,6 @@ std::auto_ptr<SessionState>  SessionMana
         state->attach(h);
     }
     return state;
-    // FIXME aconway 2008-04-29: implement force 
 }
 
 void  SessionManager::detach(std::auto_ptr<SessionState> session) {

Modified: qpid/trunk/qpid/python/qpid/messaging/driver.py
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/python/qpid/messaging/driver.py?rev=1684716&r1=1684715&r2=1684716&view=diff
==============================================================================
--- qpid/trunk/qpid/python/qpid/messaging/driver.py (original)
+++ qpid/trunk/qpid/python/qpid/messaging/driver.py Wed Jun 10 17:11:49 2015
@@ -591,6 +591,7 @@ class Engine:
     self.log_id = "%x" % id(self.connection)
     self._closing = False
     self._connected = False
+    self._reconnecting = bool(connection.sessions)
     self._attachments = {}
 
     self._in = LinkIn()
@@ -874,8 +875,9 @@ class Engine:
       else:
         raise RuntimeError("all channels used")
       sst = SessionState(self, ssn, ssn.name, ch)
-      sst.write_op(SessionAttach(name=ssn.name))
+      sst.write_op(SessionAttach(name=ssn.name, force=self._reconnecting))
       sst.write_op(SessionCommandPoint(sst.sent, 0))
+      self._reconnecting = False
       sst.outgoing_idx = 0
       sst.acked = []
       sst.acked_idx = 0



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org