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

Reply via email to