activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ericc@hz.webex.com" <er...@hz.webex.com>
Subject RE: activeMq hangs after long time using
Date Sat, 23 Aug 2008 03:28:31 GMT

thank you all firstly
we removed the mutex in the onTransportException. and it does not hang up
for more than 24 hours and it is still working well now.  we wonder whether
there will be  anything else wrong after we remove the mutex.
thanks 
eric

tabish121 wrote:
> 
> I wouldn't recommend that.  Instead just remove the mutex lock in the
> Connectors onTransportException as its not required.  Currently I'm
> thinking that we should probably just un-register for transport
> exceptions before we close down the transport since we don't really care
> at that point it an error occurs.
> 
> Regards
> Tim.
> 
>> -----Original Message-----
>> From: Filip Hanik - Dev Lists [mailto:devlists@hanik.com]
>> Sent: Tuesday, August 19, 2008 11:14 AM
>> To: dev@activemq.apache.org
>> Subject: Re: activeMq hangs after long time using
>> 
>> I'd have to look at it a bit more, but my guess is that I would take
> the
>> thread->join out of the sync block
>> 
>> Filip
>> 
>> ericc@hz.webex.com wrote:
>> > hi, Filip
>> > i read the introduce of this bug in the url you give me . And find
> the
>> code
>> > modified in that page is the same with the code in the ActiveMQ cpp
> 2.2
>> > which i used in my project and occurs the hang.
>> > could u tell me how to resolve this issue.  is it ok to return to
> the
>> code
>> > which without "synchronized( &mutex )"
>> >
>> > thanks
>> > eric.
>> >
>> >
>> > Filip Hanik - Dev Lists wrote:
>> >
>> >> hi Eric,
>> >> this is classic dead lock, and it is a bug in AMQCPP, as Rob said,
> file
>> >> a bug fix, but here is what is going on
>> >>
>> >> thread 1, in line
>> >> #9 0x00506316 in
>> activemq::connector::openwire::OpenWireConnector::close
>> >>
>> >> it has acquired the lock
>> >> synchronized( &mutex )
>> >>
>> >> then it calls
>> >> transport->close();
>> >>
>> >> and this calls
>> >>
>> >> thread->join();
>> >>
>> >> thread in this case is your thread 2.
>> >>
>> >> thread 2, in line
>> >>
>> >> #16 0x0052678f in activemq::transport::IOTransport::run
>> (this=0xb7e02410)
>> >> at
>> >> has caught an exception and it invoking onTransportException,
>> >> and this is calling
>> >>
>> >>
> activemq::connector::openwire::OpenWireConnector::onTransportException
>> >>
>> >> and this is calling
>> >> synchronized( &mutex ) {
>> >>
>> >> and that's where the dead lock is put in place.
>> >>
>> >> this bug was introduced in
>> >> http://svn.apache.org/viewvc/activemq/activemq-
>>
> cpp/trunk/src/main/activemq/connector/openwire/OpenWireConnector.cpp?vie
> w=
>> diff&r1=630692&r2=630693
>> >>
>> >> when the mutex was added in, but the threading wasn't considered
>> >>
>> >>
>> >> Filip
>> >>
>> >>
>> >>
>> >>
>> >> ericc@hz.webex.com wrote:
>> >>
>> >>> we use ActiveMQ 2.2 now and the issus occurs again
>> >>>
>> >>> we have the thread info as follows:
>> >>> thread 1: the thread in our application which call the ActiveMQ
> cpp.
>> >>> #0  0x009517a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
>> >>> #1  0x001f20fd in pthread_join () from /lib/tls/libpthread.so.0
>> >>> #2  0x00d48b09 in apr_thread_join (retval=0xfffffffc,
> thd=0x82cda20)
>> at
>> >>> threadproc/unix/thread.c:217
>> >>> #3  0x00567b7f in decaf::lang::Thread::join (this=0xb7e026c8) at
>> >>> decaf/lang/Thread.cpp:87
>> >>> #4  0x00525e8d in activemq::transport::IOTransport::close
>> >>> (this=0xb7e02410)
>> >>> at activemq/transport/IOTransport.cpp:163
>> >>> #5  0x005314bb in
> activemq::transport::filters::TcpTransport::close
>> >>> (this=0xb7e01fe0) at ./activemq/transport/TransportFilter.h:209
>> >>> #6  0x0052edf1 in
>> activemq::transport::filters::AsyncSendTransport::close
>> >>> (this=0xb7e021e8) at
>> activemq/transport/filters/AsyncSendTransport.cpp:96
>> >>> #7  0x0052a9a5 in
>> activemq::transport::filters::ResponseCorrelator::close
>> >>> (this=0xb7e00878)
>> >>>     at activemq/transport/filters/ResponseCorrelator.cpp:252
>> >>> #8  0x0050166d in
>> >>> activemq::connector::openwire::OpenWireFormatNegotiator::close
>> >>> (this=0xb7e02610)
>> >>>     at
> activemq/connector/openwire/OpenWireFormatNegotiator.cpp:228
>> >>> #9  0x00506316 in
>> activemq::connector::openwire::OpenWireConnector::close
>> >>> (this=0xb7e019e8)
>> >>>     at activemq/connector/openwire/OpenWireConnector.cpp:177
>> >>> #10 0x005089db in ~OpenWireConnector (this=0xb7e019e8) at
>> >>> activemq/connector/openwire/OpenWireConnector.cpp:116
>> >>> #11 0x004ac5d0 in
>> >>> activemq::core::ActiveMQConnectionFactory::createConnection
>> >>> (url=@0xb7e00b44, username=@0xb7e00b3c, password=@0xb7e00b40,
>> >>>     clientId=@0x197a650) at
>> >>> activemq/core/ActiveMQConnectionFactory.cpp:177
>> >>> #12 0x004acbf2 in
>> >>> activemq::core::ActiveMQConnectionFactory::createConnection
>> >>> (this=0xb7e00b38) at
> activemq/core/ActiveMQConnectionFactory.cpp:67
>> >>> #13 0x0807aefd in CCommonActiveMQConnector::CreateConnection
>> >>> (this=0xb7e01ce8) at CommonActiveMQConnector.cpp:358
>> >>>
>> >>> thread 2: the ActiveMQ thread.
>> >>> #0  0x009517a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
>> >>> #1  0x001f61de in __lll_mutex_lock_wait () from
>> /lib/tls/libpthread.so.0
>> >>> #2  0x001f2e47 in _L_mutex_lock_179 () from
> /lib/tls/libpthread.so.0
>> >>> #3  0x0237f1a8 in ?? ()
>> >>> #4  0x00d4d92c in ?? () from /opt/webex/tricon/bin/libapr-1.so.0
>> >>> #5  0xb7e01a3c in ?? ()
>> >>> #6  0x0237fbb0 in ?? ()
>> >>> #7  0x0237f1b8 in ?? ()
>> >>> #8  0x00d3dea7 in apr_thread_mutex_lock (mutex=0x82c58dc) at
>> >>> locks/unix/thread_mutex.c:92
>> >>> #9  0x00d3dea7 in apr_thread_mutex_lock (mutex=0x82c58d8) at
>> >>> locks/unix/thread_mutex.c:92
>> >>> #10 0x00581671 in decaf::util::concurrent::Mutex::lock
> (this=0x1f61de)
>> at
>> >>> decaf/util/concurrent/Mutex.cpp:53
>> >>> #11 0x00505349 in
>> >>>
> activemq::connector::openwire::OpenWireConnector::onTransportException
>> >>> (this=0xb7e019e8, source=0xb7e02610, ex=@0x237f3a4)
>> >>>     at ./decaf/util/concurrent/Lock.h:94
>> >>> #12 0x00502331 in
>> >>>
>>
> activemq::connector::openwire::OpenWireFormatNegotiator::onTransportExce
> pt
>> ion
>> >>> (this=0xb7e02610, source=0xb7e00878, ex=@0x237f3a4)
>> >>>     at ./activemq/transport/TransportFilter.h:74
>> >>> #13 0x00524919 in
>> >>> activemq::transport::TransportFilter::onTransportException
>> >>> (this=0xb7e00878, source=0xb7e021e8, ex=@0x237f3a4)
>> >>>     at activemq/transport/TransportFilter.h:74
>> >>> #14 0x00524919 in
>> >>> activemq::transport::TransportFilter::onTransportException
>> >>> (this=0xb7e021e8, source=0xb7e01fe0, ex=@0x237f3a4)
>> >>>     at activemq/transport/TransportFilter.h:74
>> >>> #15 0x00524919 in
>> >>> activemq::transport::TransportFilter::onTransportException
>> >>> (this=0xb7e01fe0, source=0xb7e02410, ex=@0x237f3a4)
>> >>>     at activemq/transport/TransportFilter.h:74
>> >>> #16 0x0052678f in activemq::transport::IOTransport::run
>> (this=0xb7e02410)
>> >>> at
>> >>> activemq/transport/IOTransport.h:105
>> >>> #17 0x00567c59 in decaf::lang::Thread::runCallback
> (self=0x82cda20,
>> >>> param=0xb7e026c8) at decaf/lang/Thread.cpp:113
>> >>> #18 0x00d489a4 in dummy_worker (opaque=0xfffffffc) at
>> >>> threadproc/unix/thread.c:142
>> >>> #19 0x001f1371 in start_thread () from /lib/tls/libpthread.so.0
>> >>> #20 0x00853ffe in clone () from /lib/tls/libc.so.6
>> >>>
>> >>>
>> >>> ericc@hz.webex.com wrote:
>> >>>
>> >>>
>> >>>> thanks for caring,
>> >>>> the answer is :yes. we use activeMQ cpp 2.1.3 . and the version
> of
>> the
>> >>>> activeMq broker is 5.5.
>> >>>>
>> >>>>
>> >>>> rajdavies wrote:
>> >>>>
>> >>>>
>> >>>>> Do you mean the cpp client?  - what version is the activemq
> broker ?
>> >>>>>
>> >>>>> On 18 Aug 2008, at 07:48, ericc@hz.webex.com wrote:
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>>> we use client activeMq2.1 .
>> >>>>>> the logic flow is as follows:
>> >>>>>> step1:there will be disconnection with activeMq server in
about
> 5
>> >>>>>> minutes,
>> >>>>>> step2:a onexception to activeMQ client ,then client reconnect
> to
>> the
>> >>>>>> activeMQ server.
>> >>>>>> step3:reconnect ok and return to step1.
>> >>>>>> the issue is :after about 300--400 times  successful
> reconnection,
>> the
>> >>>>>> Client Hangs up.
>> >>>>>>
>> >>>>>> is there anyone know this issue and how to correct it
>> >>>>>> thanks.
>> >>>>>> --
>> >>>>>> View this message in context:
>> >>>>>> http://www.nabble.com/activeMq-hangs-after-long-time-using-
>> tp19026674p19026674.html
>> >>>>>> Sent from the ActiveMQ - Dev mailing list archive at
> Nabble.com.
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>
>> >>>>>
>> >>>>
>> >>>>
>> >>>
>> >>>
>> >>
>> >>
>> >
>> >
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/activeMq-hangs-after-long-time-using-tp19026674p19118426.html
Sent from the ActiveMQ - Dev mailing list archive at Nabble.com.


Mime
View raw message