Return-Path: X-Original-To: apmail-qpid-commits-archive@www.apache.org Delivered-To: apmail-qpid-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 392CF1935C for ; Tue, 5 Apr 2016 21:50:08 +0000 (UTC) Received: (qmail 26757 invoked by uid 500); 5 Apr 2016 21:50:08 -0000 Delivered-To: apmail-qpid-commits-archive@qpid.apache.org Received: (qmail 26727 invoked by uid 500); 5 Apr 2016 21:50:08 -0000 Mailing-List: contact commits-help@qpid.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@qpid.apache.org Delivered-To: mailing list commits@qpid.apache.org Received: (qmail 26718 invoked by uid 99); 5 Apr 2016 21:50:08 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd4-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 05 Apr 2016 21:50:08 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd4-us-west.apache.org (ASF Mail Server at spamd4-us-west.apache.org) with ESMTP id AF25DC0D9B for ; Tue, 5 Apr 2016 21:50:07 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd4-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.799 X-Spam-Level: * X-Spam-Status: No, score=1.799 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, KAM_LAZY_DOMAIN_SECURITY=1, RP_MATCHES_RCVD=-0.001] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd4-us-west.apache.org [10.40.0.11]) (amavisd-new, port 10024) with ESMTP id 7-71HinZUrPa for ; Tue, 5 Apr 2016 21:50:06 +0000 (UTC) Received: from mailrelay1-us-west.apache.org (mailrelay1-us-west.apache.org [209.188.14.139]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTP id BD4CC5F19B for ; Tue, 5 Apr 2016 21:50:05 +0000 (UTC) Received: from svn01-us-west.apache.org (svn.apache.org [10.41.0.6]) by mailrelay1-us-west.apache.org (ASF Mail Server at mailrelay1-us-west.apache.org) with ESMTP id E17CAE0113 for ; Tue, 5 Apr 2016 21:50:04 +0000 (UTC) Received: from svn01-us-west.apache.org (localhost [127.0.0.1]) by svn01-us-west.apache.org (ASF Mail Server at svn01-us-west.apache.org) with ESMTP id DBA273A0315 for ; Tue, 5 Apr 2016 21:50:04 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1737887 - in /qpid/trunk/qpid/cpp: include/qpid/messaging/ src/ src/qpid/client/ src/qpid/ha/ src/qpid/messaging/ src/qpid/messaging/amqp/ Date: Tue, 05 Apr 2016 21:50:04 -0000 To: commits@qpid.apache.org From: aconway@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20160405215004.DBA273A0315@svn01-us-west.apache.org> Author: aconway Date: Tue Apr 5 21:50:04 2016 New Revision: 1737887 URL: http://svn.apache.org/viewvc?rev=1737887&view=rev Log: QPID-7149: Fixed messaging client shutdown. Fix previous commit that did not respect the plugin boundaries for messaging::shutdown. Removed: qpid/trunk/qpid/cpp/include/qpid/messaging/shutdown.h qpid/trunk/qpid/cpp/src/qpid/messaging/shutdown.cpp Modified: qpid/trunk/qpid/cpp/src/CMakeLists.txt qpid/trunk/qpid/cpp/src/qpid/client/ConnectionImpl.h qpid/trunk/qpid/cpp/src/qpid/ha/StatusCheck.cpp qpid/trunk/qpid/cpp/src/qpid/messaging/ProtocolRegistry.cpp qpid/trunk/qpid/cpp/src/qpid/messaging/ProtocolRegistry.h qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/ConnectionHandle.cpp Modified: qpid/trunk/qpid/cpp/src/CMakeLists.txt URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/CMakeLists.txt?rev=1737887&r1=1737886&r2=1737887&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/src/CMakeLists.txt (original) +++ qpid/trunk/qpid/cpp/src/CMakeLists.txt Tue Apr 5 21:50:04 2016 @@ -964,7 +964,6 @@ set (qpidmessaging_SOURCES qpid/messaging/ReceiverImpl.h qpid/messaging/SessionImpl.h qpid/messaging/SenderImpl.h - qpid/messaging/shutdown.cpp qpid/client/amqp0_10/AcceptTracker.h qpid/client/amqp0_10/AcceptTracker.cpp qpid/client/amqp0_10/AddressResolution.h Modified: qpid/trunk/qpid/cpp/src/qpid/client/ConnectionImpl.h URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/client/ConnectionImpl.h?rev=1737887&r1=1737886&r2=1737887&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/src/qpid/client/ConnectionImpl.h (original) +++ qpid/trunk/qpid/cpp/src/qpid/client/ConnectionImpl.h Tue Apr 5 21:50:04 2016 @@ -99,7 +99,7 @@ class ConnectionImpl : public Bounds, }; // Shut down the poller early. Internal use only. -void shutdown(); +QPID_CLIENT_EXTERN void shutdown(); }} Modified: qpid/trunk/qpid/cpp/src/qpid/ha/StatusCheck.cpp URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/ha/StatusCheck.cpp?rev=1737887&r1=1737886&r2=1737887&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/src/qpid/ha/StatusCheck.cpp (original) +++ qpid/trunk/qpid/cpp/src/qpid/ha/StatusCheck.cpp Tue Apr 5 21:50:04 2016 @@ -23,13 +23,13 @@ #include "HaBroker.h" #include "qpid/broker/Broker.h" #include "qpid/log/Statement.h" -#include "qpid/messaging/shutdown.h" #include "qpid/messaging/Address.h" #include "qpid/messaging/Connection.h" #include "qpid/messaging/Message.h" #include "qpid/messaging/Receiver.h" #include "qpid/messaging/Sender.h" #include "qpid/messaging/Session.h" +#include "qpid/messaging/ProtocolRegistry.h" #include "qpid/types/Variant.h" namespace qpid { @@ -136,7 +136,7 @@ void StatusCheck::endThread() { // Shut down the client poller ASAP to avoid conflict with the broker's poller. // See https://issues.apache.org/jira/browse/QPID-7149 if (--threadCount == 0) { - messaging::shutdown(); + messaging::ProtocolRegistry::shutdown(); } } Modified: qpid/trunk/qpid/cpp/src/qpid/messaging/ProtocolRegistry.cpp URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/messaging/ProtocolRegistry.cpp?rev=1737887&r1=1737886&r2=1737887&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/src/qpid/messaging/ProtocolRegistry.cpp (original) +++ qpid/trunk/qpid/cpp/src/qpid/messaging/ProtocolRegistry.cpp Tue Apr 5 21:50:04 2016 @@ -20,9 +20,11 @@ */ #include "ProtocolRegistry.h" #include "qpid/messaging/exceptions.h" +#include "qpid/client/ConnectionImpl.h" #include "qpid/client/amqp0_10/ConnectionImpl.h" #include "qpid/client/LoadPlugins.h" #include "qpid/log/Statement.h" +#include "qpid/sys/Mutex.h" #include "qpid/Options.h" #include "qpid/StringUtils.h" #include "config.h" @@ -59,6 +61,7 @@ std::string join(const std::vector Factories; +typedef std::vector Shutdowns; ConnectionImpl* create_0_10(const std::string& url, const qpid::types::Variant::Map& options) { @@ -71,6 +74,7 @@ class Registry Registry() { factories["amqp0-10"] = &create_0_10; + shutdowns.push_back(&qpid::client::shutdown); CommonOptions common("", "", QPIDC_CONF_FILE); ProtocolOptions options; try { @@ -96,9 +100,10 @@ class Registry return i->second; } } - void add(const std::string& name, ProtocolRegistry::Factory* factory) + void add(const std::string& name, ProtocolRegistry::Factory* factory, ProtocolRegistry::Shutdown* shutdown) { factories[name] = factory; + shutdowns.push_back(shutdown); } std::string getNames() const { @@ -128,8 +133,17 @@ class Registry } } } + void shutdown() { + sys::Mutex::ScopedLock l(shutdownLock); + while (!shutdowns.empty()) { + shutdowns.back()(); + shutdowns.pop_back(); + } + } private: Factories factories; + Shutdowns shutdowns; + sys::Mutex shutdownLock; std::vector versions; }; @@ -192,9 +206,14 @@ ConnectionImpl* ProtocolRegistry::next(C throw MessagingException("No suitable protocol version supported by peer"); } -void ProtocolRegistry::add(const std::string& name, Factory* factory) +void ProtocolRegistry::add(const std::string& name, Factory* factory, Shutdown* shutdown) { - theRegistry().add(name, factory); + theRegistry().add(name, factory, shutdown); } +void ProtocolRegistry::shutdown() { + theRegistry().shutdown(); +} + + }} // namespace qpid::messaging Modified: qpid/trunk/qpid/cpp/src/qpid/messaging/ProtocolRegistry.h URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/messaging/ProtocolRegistry.h?rev=1737887&r1=1737886&r2=1737887&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/src/qpid/messaging/ProtocolRegistry.h (original) +++ qpid/trunk/qpid/cpp/src/qpid/messaging/ProtocolRegistry.h Tue Apr 5 21:50:04 2016 @@ -36,9 +36,12 @@ class ProtocolRegistry { public: typedef ConnectionImpl* Factory(const std::string& url, const qpid::types::Variant::Map& options); + typedef void Shutdown(); + static ConnectionImpl* create(const std::string& url, const qpid::types::Variant::Map& options); static ConnectionImpl* next(ConnectionImpl*); - QPID_MESSAGING_EXTERN static void add(const std::string& name, Factory* factory); + QPID_MESSAGING_EXTERN static void add(const std::string& name, Factory*, Shutdown*); + QPID_MESSAGING_EXTERN static void shutdown(); private: static ConnectionImpl* createInternal(const std::vector& versions, const std::string& url, const qpid::types::Variant::Map& options, const std::string& error); }; Modified: qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/ConnectionHandle.cpp URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/ConnectionHandle.cpp?rev=1737887&r1=1737886&r2=1737887&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/ConnectionHandle.cpp (original) +++ qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/ConnectionHandle.cpp Tue Apr 5 21:50:04 2016 @@ -21,6 +21,7 @@ #include "ConnectionHandle.h" #include "ConnectionContext.h" #include "SessionHandle.h" +#include "DriverImpl.h" #include "qpid/messaging/Session.h" #include "qpid/messaging/ProtocolRegistry.h" @@ -40,11 +41,15 @@ ConnectionImpl* create(const std::string } } +void shutdown() { + DriverImpl::getDefault()->stop(); +} + struct StaticInit { StaticInit() { - ProtocolRegistry::add("amqp1.0", &create); + ProtocolRegistry::add("amqp1.0", &create, &shutdown); }; } init; } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org For additional commands, e-mail: commits-help@qpid.apache.org