You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Alex DeNeui (JIRA)" <ji...@apache.org> on 2008/01/31 23:07:36 UTC

[jira] Commented: (AMQ-1200) XA fails to start when JCA rar re-establishes connectivity with an external broker (tcp transport).

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

Alex DeNeui commented on AMQ-1200:
----------------------------------

I am using Jencks 2.0/Geronimo along with ActiveMQ 5.0 RA.  I took a look into this issue and it looks like the session object stored by the idle ServerSessionImpl's are stale on reconnect and also do not seem to throw an Exception when session.run() is called (which would get them evicted from the pool).  I added a small bit of code in ActiveMQEndpointWorker to close and recreate the ServerSessionPool everytime we try to reconnect.  This is a little brute-force but it appears to work for us.

--- src/main/java/org/apache/activemq/ra/ActiveMQEndpointWorker.java    (revision 617232)
+++ src/main/java/org/apache/activemq/ra/ActiveMQEndpointWorker.java    (working copy)
@@ -230,6 +230,12 @@
         consumer = null;
         safeClose(connection);
         connection = null;
+
+        // recreating ServerSessionPool because existing sessions are dead
+        //
+        LOG.debug("Recreating ServerSessionPool");
+        serverSessionPool.close();
+        serverSessionPool = new ServerSessionPoolImpl(this, endpointActivationKey.getActivationSpec().getMaxSessionsIntValue());
     }
 





> 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: javax.resource.spi.work.WorkEvent[source=org.jboss.resource.work.JBossWorkManager@1461b5b]
> 2007-03-09 11:43:02,883 DEBUG [org.apache.activemq.ra.ServerSessionImpl:1] Work started: javax.resource.spi.work.WorkEvent[source=org.jboss.resource.work.JBossWorkManager@1461b5b]
> 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: javax.resource.spi.work.WorkEvent[source=org.jboss.resource.work.JBossWorkManager@1461b5b]
> 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: javax.resource.spi.work.WorkEvent[source=org.jboss.resource.work.JBossWorkManager@1461b5b]
> 2007-03-09 11:53:15,196 DEBUG [org.apache.activemq.ra.ServerSessionImpl:1] Work started: javax.resource.spi.work.WorkEvent[source=org.jboss.resource.work.JBossWorkManager@1461b5b]
> 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: javax.resource.spi.work.WorkEvent[source=org.jboss.resource.work.JBossWorkManager@1461b5b]
> 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.