Hi Tim, Here you have the test case, is a visual studio 2005 project, you only have to compile giving an ip address in where there are no brokers. In this example when the connection with broker wont be stablished, the exception is catched and it calls to cleanup method to freeing resources. You are going to see that when you delete connection and session, the cpu start to take 100%.
Tell me if you need more information. Oscar Pernas Plaza 2011/1/17 Timothy Bish <tabish...@gmail.com> > On Mon, 2011-01-17 at 14:05 +0100, Oscar Pernas wrote: > > Hi all, > > > > > > I've found the problem. The problem was that when you make the > > connection->start(); if it is impossible to connect to broker, > ActiveMQ-cpp > > throws an exception. I catch this exception and call to cleanup method to > > free all resources. > > In the moment that I'm deleting resources, particulary connection > pointer, > > the library call to the mutex.wait method with 15 seconds time and takes > the > > 100% usage of the CPU. Particulary in this disconnect: > > > > // Now inform the Broker we are shutting down. > > this->disconnect( lastDeliveredSequenceId ); > > > > > > Without some code samples to show how you are using the library its hard > to make a determination about what is going on. Can you provide a > sample app that demonstrates the issue? > > Regards > > > > > I saw that is the WaitForSIngleObject the method that produces the high > cpu > > load. > > > > > > If the connection cannot start, I have to make a close, but it hangs my > cpu, > > If I catch the exception could I set connection to NULL or will be a > leak? > > > > Any other idea to close connection resource withouth this cpu high load? > > > > 2011/1/17 Oscar Pernas <os...@pernas.es> > > > > > Hi all, > > > > > > > > > I am developing an application that uses JMS and needs to start with or > > > without the connection to broker was stablished or not. For this, I am > > > coding a reconnect thread that is spawned when the initial reconnects > fail. > > > I've set this connection strings: > > > > > > failover://(tcp://10.0.2.22:61616 > > > > )?startupMaxReconnectAttempts=1&initialReconnectDelay=1&maxReconnectDelay=1 > > > > > > > > > When the application starts and try to connect, if it fails, the thread > is > > > spawned and trying to reconnect every 30 seconds, with this case I can > see > > > two weirds behaviours. > > > > > > - Every time that the thread wants to reconnect, the process eats the > 100% > > > of the cpu. I've follow the code and I dont know why, but in the > function > > > > > > bool CountDownLatch::await( long long timeOut ) > > > > > > I have a mutex wait timeOut that is equal to 15000 seconds. > > > > > > mutex.wait( timeOut ); > > > > > > Why the code is waiting 15000 seconds? why it takes the 100% of the > cpu? > > > > > > The await function is called by: > > > > > > Pointer<Response> ResponseCorrelator::request --> response = > > > futureResponse->getResponse( timeout ); > > > > > > > > > Im developing in windows 2000. > > > > > > > > > > > > Regards > > > > > > > > > > > > > > > -- > > > Óscar Pernas Plaza. > > > > > > > > > > > -- > Tim Bish > ------------ > FuseSource > Email: tim.b...@fusesource.com > Web: http://fusesource.com > Twitter: tabish121 > Blog: http://timbish.blogspot.com/ > > > -- Óscar Pernas Plaza.
testCloseConn.rar
Description: application/rar