activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kai Hudalla (JIRA)" <j...@apache.org>
Subject [jira] Commented: (AMQ-1200) XA fails to start when JCA rar re-establishes connectivity with an external broker (tcp transport).
Date Mon, 21 Apr 2008 15:50:43 GMT

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


Mime
View raw message