Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
3.2.4
-
None
-
None
-
ActiveMQ 5.4.2
ActiveMQ-CPP 3.2.4
Ubuntu 10.04
JRE 1.6.0_20-b02
Description
An unexpected exception is thrown if broker is stopped while consumer is in transaction.
I get the following message:
terminate called after throwing an instance of 'cms::CMSException'
what(): Failover timeout of 1000 ms reached.
Aborted (core dumped)
core backtrace:
#0 0x001ef422 in __kernel_vsyscall ()
#1 0x00c5a651 in *__GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#2 0x00c5da82 in *__GI_abort () at abort.c:92
#3 0x00bf952f in _gnu_cxx::_verbose_terminate_handler() () from /usr/lib/libstdc++.so.6
#4 0x00bf7465 in ?? () from /usr/lib/libstdc++.so.6
#5 0x00bf74a2 in std::terminate() () from /usr/lib/libstdc++.so.6
#6 0x00bf74c5 in ?? () from /usr/lib/libstdc++.so.6
#7 0x00bf6915 in __cxa_call_unexpected () from /usr/lib/libstdc++.so.6
#8 0x0052f8ae in activemq::core::TransactionSynhcronization::beforeEnd (this=0x93ac548) at activemq/core/ActiveMQConsumer.cpp:84
#9 0x00550588 in activemq::core::ActiveMQTransactionContext::beforeEnd (this=0x93b3e48) at activemq/core/ActiveMQTransactionContext.cpp:192
#10 0x00550d63 in activemq::core::ActiveMQTransactionContext::commit (this=0x93b3e48) at activemq/core/ActiveMQTransactionContext.cpp:127
#11 0x0053e460 in activemq::core::ActiveMQSession::commit (this=0x93b3c10) at activemq/core/ActiveMQSession.cpp:189
#12 0x0042c1a0 in activemq::cmsutil::PooledSession::commit (this=0x93b3fd8) at activemq/cmsutil/PooledSession.h:87
#13 0x0804c0fb in Consumer::onMessage (this=0x93a8c30, message=0x93b49b0) at main.cpp:455
#14 0x0804bdc8 in Consumer::consumeLoop (this=0x93a8c30) at main.cpp:415
#15 0x0804bb56 in Consumer::run (this=0x93a8c30) at main.cpp:381
#16 0x00823cf1 in decaf::lang::ThreadProperties::runCallback (properties=0x93abff0) at decaf/lang/Thread.cpp:135
#17 0x00822847 in threadWorker (arg=0x93abff0) at decaf/lang/Thread.cpp:188
#18 0x0015a96e in start_thread (arg=0xb6f8bb70) at pthread_create.c:300
#19 0x00cfda4e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130
Exception specification for method 'activemq::core::TransactionSynhcronization::beforeEnd' says: 'throw( exceptions::ActiveMQException )' but 'ActiveMQConsumer::acknowledge' throws 'cms::CMSException', so 'std::unexpected' is called and 'abort' occurs. (http://www.linuxprogrammingblog.com/cpp-exception-specifications-are-evil)