activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Barbara Dawkins (JIRA)" <j...@apache.org>
Subject [jira] Updated: (AMQCPP-314) Starting app with Com using cms destroys connection of other app. New problem with recent lib version
Date Mon, 23 Aug 2010 14:03:47 GMT

     [ 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.


Mime
View raw message