activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vadim Katz (JIRA)" <j...@apache.org>
Subject [jira] Issue Comment Edited: (AMQ-1710) Failing over in JDBC Master/Slave topology does not preserve transaction state
Date Wed, 03 Sep 2008 22:07:53 GMT

    [ https://issues.apache.org/activemq/browse/AMQ-1710?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=45367#action_45367
] 

vadimos edited comment on AMQ-1710 at 9/3/08 3:07 PM:
---------------------------------------------------------

Thank you for suggesting a patch, Mario.
I have applied it but received the following exception in the slave broker
{code}
008-09-03 14:49:58,835 [/127.0.0.1:4038] ERROR Service                        - Async error
occurred: javax.jms.JMSException: Could not correlate acknowledgment with dispatched message:
MessageAck {commandId = 3709, responseRequired = false, ackType = 0, consumerId = ID:VKATZ-XP1-3975-1220478455256-0:0:4:1,
firstMessageId = null, lastMessageId = ID:VKATZ-XP1-3975-1220478455256-0:0:26:1:10, destination
= queue://convert.input, transactionId = TX:ID:VKATZ-XP1-3975-1220478455256-0:0:10, messageCount
= 1}
javax.jms.JMSException: Could not correlate acknowledgment with dispatched message: MessageAck
{commandId = 3709, responseRequired = false, ackType = 0, consumerId = ID:VKATZ-XP1-3975-1220478455256-0:0:4:1,
firstMessageId = null, lastMessageId = ID:VKATZ-XP1-3975-1220478455256-0:0:26:1:10, destination
= queue://convert.input, transactionId = TX:ID:VKATZ-XP1-3975-1220478455256-0:0:10, messageCount
= 1}
	at org.apache.activemq.broker.region.PrefetchSubscription.acknowledge(PrefetchSubscription.java:279)
	at org.apache.activemq.broker.region.AbstractRegion.acknowledge(AbstractRegion.java:364)
	at org.apache.activemq.broker.region.RegionBroker.acknowledge(RegionBroker.java:470)
	at org.apache.activemq.broker.TransactionBroker.acknowledge(TransactionBroker.java:194)
	at org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:73)
	at org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:73)
	at org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:84)
	at org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:443)
	at org.apache.activemq.command.MessageAck.visit(MessageAck.java:196)
	at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:292)
	at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:180)
	at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68)
	at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:143)
	at org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:206)
	at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84)
	at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:196)
	at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:183)
	at java.lang.Thread.run(Thread.java:619)
{code}
I've tested it with amq-5.1.0 and spring-2.5.5 with locally transacted session. Also, even
though the slave broker becomes active it hangs after throwing the exception and stops accepting
new connections.

thanks,
vadim


      was (Author: vadimos):
    Thank you for suggesting a patch, Mario.
I have applied it but received the following exception in the slave broker
{code}
008-09-03 14:49:58,835 [/127.0.0.1:4038] ERROR Service                        - Async error
occurred: javax.jms.JMSException: Could not correlate acknowledgment with dispatched message:
MessageAck {commandId = 3709, responseRequired = false, ackType = 0, consumerId = ID:VKATZ-XP1-3975-1220478455256-0:0:4:1,
firstMessageId = null, lastMessageId = ID:VKATZ-XP1-3975-1220478455256-0:0:26:1:10, destination
= queue://convert.input, transactionId = TX:ID:VKATZ-XP1-3975-1220478455256-0:0:10, messageCount
= 1}
javax.jms.JMSException: Could not correlate acknowledgment with dispatched message: MessageAck
{commandId = 3709, responseRequired = false, ackType = 0, consumerId = ID:VKATZ-XP1-3975-1220478455256-0:0:4:1,
firstMessageId = null, lastMessageId = ID:VKATZ-XP1-3975-1220478455256-0:0:26:1:10, destination
= queue://convert.input, transactionId = TX:ID:VKATZ-XP1-3975-1220478455256-0:0:10, messageCount
= 1}
	at org.apache.activemq.broker.region.PrefetchSubscription.acknowledge(PrefetchSubscription.java:279)
	at org.apache.activemq.broker.region.AbstractRegion.acknowledge(AbstractRegion.java:364)
	at org.apache.activemq.broker.region.RegionBroker.acknowledge(RegionBroker.java:470)
	at org.apache.activemq.broker.TransactionBroker.acknowledge(TransactionBroker.java:194)
	at org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:73)
	at org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:73)
	at org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:84)
	at org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:443)
	at org.apache.activemq.command.MessageAck.visit(MessageAck.java:196)
	at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:292)
	at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:180)
	at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68)
	at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:143)
	at org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:206)
	at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84)
	at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:196)
	at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:183)
	at java.lang.Thread.run(Thread.java:619)

I've tested it with amq-5.1.0 and spring-2.5.5 with locally transacted session. Also, even
though the slave broker becomes active it hangs after throwing the exception and stops accepting
new connections.

thanks,
vadim
{code}
  
> Failing over in JDBC Master/Slave topology does not preserve transaction state
> ------------------------------------------------------------------------------
>
>                 Key: AMQ-1710
>                 URL: https://issues.apache.org/activemq/browse/AMQ-1710
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker, Transport
>    Affects Versions: 4.1.2
>         Environment: Tested on 4.1.1 and 4.1.2
>            Reporter: Rob Bugh
>         Attachments: AMQ-1710.patch, FailoverTest.java
>
>
> Recreate steps:
> 1) Start two brokers in JDBC Master/Slave topology
> 2) Create an app that puts two or more messages in a queue (two messages are sufficient).
Give each message a JMXGroupID to force them to go to the same consumer.
> 3) Create another app that creates two connection to the broker and on each connection
creates a session and a consumer with a unique clientID. Each should attempt to consume messages
from the queue defined above.
> 4) Run the app and when the first message is consumed stop the master. Failover will
occur and the slave becomes the new master.
> 5) Notice that when the transport resumes in the client that received the first message
an exception like the following is thrown:
>      javax.jms.JMSException: Transaction 'TX:ID:HOSTNAME-3289-1210016021661-0:1:1' has
not been started.
> 6) Notice that the second consumer now recieves both messages.

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