Jason, Thanks for the very thorough investigation; it's very much appreciated.
Yes, when you submit the bug in JIRA (you'll need to sign up for a JIRA account), please describe the bug in enough detail that hopefully an implementor will be able to understand the problem without referring back to this thread, but also add a link to the thread (on Nabble.com) in case there were questions. Note that I've recently had poor results using the link embedded at the bottom of emails, so please make sure that the link actually loads this specific thread. Thanks again for all that you've done. Tim On Dec 5, 2017 1:04 AM, "jasons" <jason.sm...@au.abb.com> wrote: > Hi Tim, we managed to attach a debugger as requested and the path you > identified does seem to be the one taken by the incorrect update to > ACTIVEMQ_ACKS table in respect of DC1. We took several stack dumps (text > below) at the different debug points you requested in case that also helps. > Note that the code passed through the OracleJDBCAdapter.doSetLastAck method > twice, the first time updating LAST_ACKED_ID for DC1 and the second time, > as > you'd sort of expected, updating the LAST_ACKED_ID for DC2 (correct as this > consumer was consuming and the selector matched). We also used the > debugger > to inspect the value of bind params on the UPDATE statement each time to > confirm which DC1 was being updated in which order. We further used SQL > developer to identify when the change had occurred. Based on your earlier > comment, I guess we move to creating a JIRA which I'll now do. Never > having > done this I assume I just bring the history of this forum topic to the JIRA > background. Let me know please if anything else to do on our end. > > Cheers > > Jason. > > > Here are the stack traces in the order they fired and were captured from > the > debug session for the thread hitting the breakpoint: > > 1st BP: > > Daemon Thread [ActiveMQ Transport: tcp:///127.0.0.1:35880@61616] > (Suspended > (entry into method unmatched in DurableTopicSubscription)) > owns: Topic (id=72) > DurableTopicSubscription.unmatched(MessageReference) line: 98 > SimpleDispatchPolicy.dispatch(MessageReference, > MessageEvaluationContext, > List<Subscription>) line: 44 > Topic.dispatch(ConnectionContext, Message) line: 769 > Topic.doMessageSend(ProducerBrokerExchange, Message) line: 554 > Topic.send(ProducerBrokerExchange, Message) line: 482 > ManagedTopicRegion(AbstractRegion).send(ProducerBrokerExchange, > Message) > line: 503 > ManagedRegionBroker(RegionBroker).send(ProducerBrokerExchange, > Message) > line: 468 > ManagedRegionBroker.send(ProducerBrokerExchange, Message) line: > 293 > SchedulerBroker(BrokerFilter).send(ProducerBrokerExchange, > Message) line: > 153 > SchedulerBroker.send(ProducerBrokerExchange, Message) line: 195 > AdvisoryBroker(BrokerFilter).send(ProducerBrokerExchange, > Message) line: > 153 > CompositeDestinationBroker.send(ProducerBrokerExchange, Message) > line: 96 > TransactionBroker.send(ProducerBrokerExchange, Message) line: 293 > RedeliveryPlugin(MutableBrokerFilter).send(ProducerBrokerExchange, > Message) > line: 158 > LoggingBrokerPlugin(MutableBrokerFilter).send( > ProducerBrokerExchange, > Message) line: 158 > LoggingBrokerPlugin.send(ProducerBrokerExchange, Message) line: > 275 > BrokerService$6(MutableBrokerFilter).send(ProducerBrokerExchange, > Message) > line: 158 > ManagedTransportConnection(TransportConnection). > processMessage(Message) > line: 581 > ActiveMQTextMessage(ActiveMQMessage).visit(CommandVisitor) line: > 768 > ManagedTransportConnection(TransportConnection).service(Command) > line: 336 > TransportConnection$1.onCommand(Object) line: 200 > MutexTransport.onCommand(Object) line: 50 > WireFormatNegotiator.onCommand(Object) line: 125 > InactivityMonitor(AbstractInactivityMonitor).onCommand(Object) > line: 301 > TcpTransport(TransportSupport).doConsume(Object) line: 83 > TcpTransport.doRun() line: 233 > TcpTransport.run() line: 215 > Thread.run() line: 745 > > 2nd BP > > Daemon Thread [ActiveMQ Transport: tcp:///127.0.0.1:35875@61616] > (Suspended > (breakpoint at line 325 in DurableTopicSubscription)) > owns: Object (id=130) > DurableTopicSubscription.acknowledge(ConnectionContext, > MessageAck, > MessageReference) line: 325 > > DurableTopicSubscription(PrefetchSubscription). > acknowledge(ConnectionContext, > MessageAck) line: 233 > ManagedTopicRegion(AbstractRegion).acknowledge( > ConsumerBrokerExchange, > MessageAck) line: 526 > ManagedRegionBroker(RegionBroker).acknowledge( > ConsumerBrokerExchange, > MessageAck) line: 484 > SchedulerBroker(BrokerFilter).acknowledge(ConsumerBrokerExchange, > MessageAck) line: 88 > AdvisoryBroker(BrokerFilter).acknowledge(ConsumerBrokerExchange, > MessageAck) line: 88 > > CompositeDestinationBroker(BrokerFilter).acknowledge( > ConsumerBrokerExchange, > MessageAck) line: 88 > TransactionBroker.acknowledge(ConsumerBrokerExchange, MessageAck) > line: 276 > RedeliveryPlugin(MutableBrokerFilter).acknowledge( > ConsumerBrokerExchange, > MessageAck) line: 98 > > LoggingBrokerPlugin(MutableBrokerFilter).acknowledge( > ConsumerBrokerExchange, > MessageAck) line: 98 > LoggingBrokerPlugin.acknowledge(ConsumerBrokerExchange, > MessageAck) line: > 162 > BrokerService$6(MutableBrokerFilter).acknowledge( > ConsumerBrokerExchange, > MessageAck) line: 98 > > ManagedTransportConnection(TransportConnection). > processMessageAck(MessageAck) > line: 590 > MessageAck.visit(CommandVisitor) line: 245 > ManagedTransportConnection(TransportConnection).service(Command) > line: 336 > TransportConnection$1.onCommand(Object) line: 200 > MutexTransport.onCommand(Object) line: 50 > WireFormatNegotiator.onCommand(Object) line: 125 > InactivityMonitor(AbstractInactivityMonitor).onCommand(Object) > line: 301 > TcpTransport(TransportSupport).doConsume(Object) line: 83 > TcpTransport.doRun() line: 233 > TcpTransport.run() line: 215 > Thread.run() line: 745 > > > 3rd BP: > > Daemon Thread [Journal checkpoint worker] (Suspended) > OracleJDBCAdapter(DefaultJDBCAdapter).doSetLastAck( > TransactionContext, > ActiveMQDestination, XATransactionId, String, String, long, long) line: 526 > JDBCTopicMessageStore.acknowledge(ConnectionContext, String, > String, > MessageId, MessageAck) line: 86 > JournalTopicMessageStore$2.execute() line: 191 > JournalMessageStore$3.execute() line: 306 > TransactionTemplate.run(Callback) line: 44 > JournalTopicMessageStore(JournalMessageStore).checkpoint(Callback) > line: > 262 > JournalTopicMessageStore.checkpoint() line: 182 > JournalPersistenceAdapter$5.call() line: 455 > JournalPersistenceAdapter$5.call() line: 452 > FutureTask<V>.run() line: 262 > ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker) line: 1145 > ThreadPoolExecutor$Worker.run() line: 615 > Thread.run() line: 745 > > > > > > > > > -- > Sent from: http://activemq.2283324.n4.nabble.com/ActiveMQ-User- > f2341805.html >