[ https://issues.apache.org/activemq/browse/AMQCPP-314?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Barbara Dawkins updated AMQCPP-314: ----------------------------------- I traced through the creation of the ConnectionID. When apr_gethostname calls gethostname, some sort of exception occurs that throws the trace back to ActiveMQConnection::ActiveMQConnection. I attempted to do generic catches, but was unable to stop the exit back to the "Pointer<ConnectionConfig> configuration( new ConnectionConfig );" line. > libapr-1D.dll!apr_gethostname(char * buf=0x0214e650, int > len=0x00000101, apr_pool_t * cont=0x01aa2328) Line 262 C activemq-cppud.dll!decaf::net::InetAddress::getLocalHost() Line 154 + 0x2a bytes C++ activemq-cppud.dll!activemq::util::IdGenerator::StaticData::StaticData() Line 42 + 0xc bytes C++ activemq-cppud.dll!activemq::util::IdGenerator::getClassStaticData() Line 163 + 0x2a bytes C++ activemq-cppud.dll!activemq::util::IdGenerator::generateId() Line 89 + 0x5 bytes C++ activemq-cppud.dll!activemq::core::ConnectionConfig::ConnectionConfig() Line 145 + 0x1c bytes C++ activemq-cppud.dll!activemq::core::ActiveMQConnection::ActiveMQConnection(const Since I don't know what error winsock2's gethostname is generating, I was able to get things working here by making this change to IdGenerator::StaticData::StaticData(): //////////////////////////////////////////////////////////////////////////////// IdGenerator::StaticData::StaticData() : UNIQUE_STUB(), instanceCount(0), hostname() { TCHAR chrComputerName[MAX_COMPUTERNAME_LENGTH + 1]; DWORD dwBufferSize = MAX_COMPUTERNAME_LENGTH + 1; std::string stub = ""; #ifdef _WINDOWS_ if(GetComputerName(chrComputerName,&dwBufferSize)) { // We got the name, set the return value. hostname = chrComputerName; } else { hostname = UUID::randomUUID().toString(); } stub = "-1-" + Long::toString( System::currentTimeMillis() ) + "-"; #else try { hostname = InetAddress::getLocalHost().getHostName(); ServerSocket ss( 0 ); stub = "-" + Long::toString( ss.getLocalPort() ) + "-" + Long::toString( System::currentTimeMillis() ) + "-"; Thread::sleep( 100 ); ss.close(); } catch( Exception& ioe ) { hostname = "localhost"; stub = "-1-" + Long::toString( System::currentTimeMillis() ) + "-"; } #endif UNIQUE_STUB = stub; } P. S. Looking forward to your suggestions for permanent fix :-). > Starting app with Com using cms destroys connection of other app. New problem > with recent lib version > ----------------------------------------------------------------------------------------------------- > > Key: AMQCPP-314 > URL: https://issues.apache.org/activemq/browse/AMQCPP-314 > Project: ActiveMQ C++ Client > Issue Type: Bug > Components: CMS Impl > Affects Versions: 3.2.2 > Environment: Windows XP, SP 3, ActiveMQ apache-activemq-5.3.1 and/or > apache-activemq-5.4.0. CMS library 3.2.2 > Reporter: Barbara Dawkins > Assignee: Timothy Bish > Priority: Critical > Attachments: ActiveMQLog_CatcherStart.txt, > ActiveMQLog_PitcherStart.txt, ActiveMQLog_SimpleSenderStart.txt, > CatcherPitcherTest2.zip > > > We ran into a problem after we upgraded the CMS library from revison 3.1.3 to > revision 3.2.2. We have two applications. When we start up the second > application, and try to send a message to the activemq broker, it seems to > wipe out the existing connection that the first application has. This is a > new problem. We have not seen this with the earlier version of CMS. > Here are more details about our applications. > Both applications are using a COM component that we have created as a thin > wrapper around CMS. > Application 1: > The "Catcher" application creates listeners and waits for messages to arrive > on two "request" topics. When it receives messages, it sends out responses > on the appropriate "response" topic. This app is intended as a local, > dumbed-down similator of a remote server. The Catcher app uses only the COM > wrapper of CMS. When the catcher is started, you can see it's listeners on > the "Topics" page. > Application 2: > The "SimpleSender" app uses an Additional COM object that loads the CMS > wrapper. SimpleSender creates listers on the "response" topics and sends > messages on the "request" topics. When SimpleSender starts, it loads it's > configuration, creates a listener on the response topic, and sends 1 message. > If you look at the topics page (http://localhost:8161/admin/topics.jsp) > before the message is sent, the Catcher listeners are undisturbed. After it > sends a message, the listeners are destroyed. > Application 3: > A simple message sender that only uses the COM wrapper. It does not destroy > Catcher's connections, and can be used to test whether Catcher can receive > messages. > I will send an attachment containing the test programs. > -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.