[
https://issues.apache.org/activemq/browse/AMQ-1200?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=42374#action_42374
]
Kai Hudalla commented on AMQ-1200:
----------------------------------
Alex is right, the problem is that the _ActiveMQEndpointWorker_ calls
_Connection.close()_ when it tries to re-connect to the broker.
_ActiveMQConnection.close()_ will then stop message delivery on all its
registered _Sessions_ by calling _ActiveMQSession.stop()_. Because of this the
_Session.run()_ method invoked by _ServerSessionImpl.run()_ does not throw any
exception but instead just doesn't do anything (and in particular does not
deliver any messages to the _MessageListener_ registered with the _Session_).
I have modified the _ServerSessionImplTest_ test case to include a test for the
_ServerSessionImpl_ to detect a stopped Session. I have tried to use Alex' diff
in order to solve the problem but it didn't work for me. However, I have added
some lines to _ServerSessionImpl_ to check if its Session is still running
before calling its run() method. If it doesn't, the _ServerSessionImpl_ is
marked as stale and will be evicted from the _ServerSessionPoolImpl_ using the
_removeFromPool_ method ... Pending messages are then dispatched to another
(new) _ServerSessionImpl_ in the pool.
Kai
> XA fails to start when JCA rar re-establishes connectivity with an external
> broker (tcp transport).
> ---------------------------------------------------------------------------------------------------
>
> Key: AMQ-1200
> URL: https://issues.apache.org/activemq/browse/AMQ-1200
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker, Connector
> Affects Versions: 4.1.0
> Environment: Linux 2.6.8-24.24-smp
> java version "1.5.0_09"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_09-b03)
> Java HotSpot(TM) Server VM (build 1.5.0_09-b03, mixed mode)
> fresh checkout of activemq-4.1 and build (as of 05-March-07).
> Reporter: John Stalker
> Priority: Minor
> Fix For: 5.2.0
>
>
> Hi,
> Here's the scenario:
> I recently (ie, a couple days ago) downloaded and built the 4.1 branch, set
> up JBoss 4.0.5.GA with a slightly modified activemq-ra.rar (ra.xml modified
> to communicate with an external instance of the broker via tcp and setting
> UseInboundSession to true...not sure what this does really, but I tried it as
> false and the same behavior happens).
> Via a persistent queue (oracle 10 backing), I'm consuming messages in an MDB
> via the JCA message datasource using XA.
> Here's the problem I'm seeing: if I shut down the JMS server, I see the
> appropriate EOF exception and subsequent reconnection attempts by the rar in
> JBoss. When I startup the external activemq broker again, the connection
> appears to get reestablished and work is accepted, started, and
> completed...EXCEPT there's no mention of XA and thus the message is never
> actually accepted and consumed.
> Here's some debug output from the JCA:
> PRE shutdown of external broker:
> 2007-03-09 11:43:02,883 DEBUG [org.apache.activemq.ra.ServerSessionPoolImpl]
> ServerSession requested.
> 2007-03-09 11:43:02,883 DEBUG [org.apache.activemq.ra.ServerSessionPoolImpl]
> Using idle session: ServerSessionImpl:1
> 2007-03-09 11:43:02,883 DEBUG [org.apache.activemq.ra.ServerSessionImpl:1]
> Starting run.
> 2007-03-09 11:43:02,883 DEBUG [org.apache.activemq.ra.ServerSessionImpl:1]
> Work accepted: [EMAIL PROTECTED]
> 2007-03-09 11:43:02,883 DEBUG [org.apache.activemq.ra.ServerSessionImpl:1]
> Work started: [EMAIL PROTECTED]
> 2007-03-09 11:43:02,883 DEBUG [org.apache.activemq.ra.ServerSessionImpl:1]
> Running
> 2007-03-09 11:43:02,883 DEBUG [org.apache.activemq.ra.ServerSessionImpl:1]
> run loop start
> 2007-03-09 11:43:02,884 DEBUG [org.apache.activemq.TransactionContext] Start:
> XidImpl[FormatId=257, GlobalId=node118/114, BranchQual=1, localId=114]
> 2007-03-09 11:43:02,884 DEBUG [org.apache.activemq.TransactionContext]
> Started XA transaction: XID:257:6e6f64653131382f313134:31
> - snip - output of a resulting consumption of message
> 2007-03-09 11:43:04,447 DEBUG [org.apache.activemq.TransactionContext] End:
> XidImpl[FormatId=257, GlobalId=node118/114, BranchQual=1, localId=114]
> 2007-03-09 11:43:04,447 DEBUG [org.apache.activemq.TransactionContext] Ended
> XA transaction: XID:257:6e6f64653131382f313134:31
> 2007-03-09 11:43:04,448 DEBUG [org.apache.activemq.TransactionContext]
> Prepare: XidImpl[FormatId=257, GlobalId=node118/114, BranchQual=1,
> localId=114]
> 2007-03-09 11:43:04,454 DEBUG [org.apache.activemq.TransactionContext]
> Commit: XidImpl[FormatId=257, GlobalId=node118/114, BranchQual=1, localId=114]
> 2007-03-09 11:43:05,150 DEBUG [org.apache.activemq.ra.ServerSessionImpl:1]
> run loop end
> 2007-03-09 11:43:05,178 DEBUG [org.apache.activemq.ra.ServerSessionPoolImpl]
> Session returned to pool: ServerSessionImpl:1
> 2007-03-09 11:43:05,178 DEBUG [org.apache.activemq.ra.ServerSessionImpl:1]
> Run finished
> 2007-03-09 11:43:05,178 DEBUG [org.apache.activemq.ra.ServerSessionImpl:1]
> Work completed: [EMAIL PROTECTED]
> POST shutdown and restart of external broker
> 2007-03-09 11:46:33,077 DEBUG
> [org.apache.activemq.transport.WireFormatNegotiator] Sending: WireFormatInfo
> { version=2, properties={TightEncodingEnabled=true, CacheSize=1024,
> TcpNoDelayEnabled=true, SizePrefixDisabled=false, StackTraceEnabled=true,
> MaxInactivityDuration=30000, CacheEnabled=true}, magic=[A,c,t,i,v,e,M,Q]}
> 2007-03-09 11:46:33,126 DEBUG
> [org.apache.activemq.transport.WireFormatNegotiator] Received WireFormat:
> WireFormatInfo { version=2, properties={TightEncodingEnabled=true,
> CacheSize=1024, TcpNoDelayEnabled=true, SizePrefixDisabled=false,
> StackTraceEnabled=true, MaxInactivityDuration=30000, CacheEnabled=true},
> magic=[A,c,t,i,v,e,M,Q]}
> 2007-03-09 11:46:33,126 DEBUG
> [org.apache.activemq.transport.WireFormatNegotiator]
> tcp://seqlims.broad.mit.edu/18.103.10.168:61616 before negotiation:
> OpenWireFormat{version=2, cacheEnabled=false, stackTraceEnabled=false,
> tightEncodingEnabled=false, sizePrefixDisabled=false}
> 2007-03-09 11:46:33,126 DEBUG
> [org.apache.activemq.transport.WireFormatNegotiator]
> tcp://seqlims.broad.mit.edu/18.103.10.168:61616 after negotiation:
> OpenWireFormat{version=2, cacheEnabled=true, stackTraceEnabled=true,
> tightEncodingEnabled=true, sizePrefixDisabled=false}
> 2007-03-09 11:53:15,196 DEBUG [org.apache.activemq.ra.ServerSessionPoolImpl]
> ServerSession requested.
> 2007-03-09 11:53:15,196 DEBUG [org.apache.activemq.ra.ServerSessionPoolImpl]
> Using idle session: ServerSessionImpl:1
> 2007-03-09 11:53:15,196 DEBUG [org.apache.activemq.ra.ServerSessionImpl:1]
> Starting run.
> 2007-03-09 11:53:15,196 DEBUG [org.apache.activemq.ra.ServerSessionImpl:1]
> Work accepted: [EMAIL PROTECTED]
> 2007-03-09 11:53:15,196 DEBUG [org.apache.activemq.ra.ServerSessionImpl:1]
> Work started: [EMAIL PROTECTED]
> 2007-03-09 11:53:15,197 DEBUG [org.apache.activemq.ra.ServerSessionImpl:1]
> Running
> - as you can see, no XA here
> 2007-03-09 11:53:15,197 DEBUG [org.apache.activemq.ra.ServerSessionImpl:1]
> run loop start
> 2007-03-09 11:53:15,197 DEBUG [org.apache.activemq.ra.ServerSessionImpl:1]
> run loop end
> 2007-03-09 11:53:15,197 DEBUG [org.apache.activemq.ra.ServerSessionPoolImpl]
> Session returned to pool: ServerSessionImpl:1
> 2007-03-09 11:53:15,197 DEBUG [org.apache.activemq.ra.ServerSessionImpl:1]
> Run finished
> 2007-03-09 11:53:15,197 DEBUG [org.apache.activemq.ra.ServerSessionImpl:1]
> Work completed: [EMAIL PROTECTED]
> Thanks for your help!
> John
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.