summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/Connection.h
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2010-06-22 13:29:52 +0000
committerAlan Conway <aconway@apache.org>2010-06-22 13:29:52 +0000
commita49decc7d56bdb704a5d1580058c0da57e9a9353 (patch)
treeaf0acf1f9e7e5f48336407ae438e11528db75b38 /cpp/src/qpid/broker/Connection.h
parent265841a55cca55a7d3f8eea1d9e9c24a5fc2e350 (diff)
downloadqpid-python-a49decc7d56bdb704a5d1580058c0da57e9a9353.tar.gz
Fix cluster broker crashes when management is active.
Cluser brokers were exiting with errors "modified cluster state outside cluster context" and "confirmed < (50+0) but only sent < (49+0)" Fix was to: - delay completion of incoming update till update connection closes. - delay addding new connections to managment until connection is announced. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@956882 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/Connection.h')
-rw-r--r--cpp/src/qpid/broker/Connection.h14
1 files changed, 12 insertions, 2 deletions
diff --git a/cpp/src/qpid/broker/Connection.h b/cpp/src/qpid/broker/Connection.h
index cf199fa831..8ad78f6652 100644
--- a/cpp/src/qpid/broker/Connection.h
+++ b/cpp/src/qpid/broker/Connection.h
@@ -79,9 +79,15 @@ class Connection : public sys::ConnectionInputHandler,
virtual void connectionError(const std::string&) = 0;
};
- Connection(sys::ConnectionOutputHandler* out, Broker& broker, const std::string& mgmtId,
+ Connection(sys::ConnectionOutputHandler* out,
+ Broker& broker,
+ const std::string& mgmtId,
const qpid::sys::SecuritySettings&,
- bool isLink = false, uint64_t objectId = 0, bool shadow=false);
+ bool isLink = false,
+ uint64_t objectId = 0,
+ bool shadow=false,
+ bool delayManagement = false);
+
~Connection ();
/** Get the SessionHandler for channel. Create if it does not already exist */
@@ -139,6 +145,9 @@ class Connection : public sys::ConnectionInputHandler,
// Used by cluster to update connection status
sys::AggregateOutput& getOutputTasks() { return outputTasks; }
+ /** Cluster delays adding management object in the constructor then calls this. */
+ void addManagementObject();
+
const qpid::sys::SecuritySettings& getExternalSecuritySettings() const
{
return securitySettings;
@@ -166,6 +175,7 @@ class Connection : public sys::ConnectionInputHandler,
boost::intrusive_ptr<sys::TimerTask> heartbeatTimer;
boost::intrusive_ptr<ConnectionTimeoutTask> timeoutTimer;
ErrorListener* errorListener;
+ uint64_t objectId;
bool shadow;
public: