You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomee.apache.org by Dain Sundstrom <da...@iq80.com> on 2007/09/23 00:09:58 UTC
Re: svn commit: r578471 - /openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/EndpointFactory.java
I had to revert this change since it broke the build.
-dain
On Sep 22, 2007, at 11:32 AM, manugeorge@apache.org wrote:
> Author: manugeorge
> Date: Sat Sep 22 11:32:45 2007
> New Revision: 578471
>
> URL: http://svn.apache.org/viewvc?rev=578471&view=rev
> Log:
> Temporary Fix for GERONIMO-3354 - Exception thrown by MDB involved
> in XA transaction.
> Wrapped XAResource to make it NamedXAResource. Container id is
> passed as the name.
>
> Modified:
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/
> apache/openejb/core/mdb/EndpointFactory.java
>
> Modified: openejb/trunk/openejb3/container/openejb-core/src/main/
> java/org/apache/openejb/core/mdb/EndpointFactory.java
> URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/
> openejb-core/src/main/java/org/apache/openejb/core/mdb/
> EndpointFactory.java?rev=578471&r1=578470&r2=578471&view=diff
> ======================================================================
> ========
> --- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/
> apache/openejb/core/mdb/EndpointFactory.java (original)
> +++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/
> apache/openejb/core/mdb/EndpointFactory.java Sat Sep 22 11:32:45 2007
> @@ -17,6 +17,8 @@
> */
> package org.apache.openejb.core.mdb;
>
> +import org.apache.geronimo.transaction.manager.NamedXAResource;
> +import
> org.apache.geronimo.transaction.manager.WrapperNamedXAResource;
> import org.apache.openejb.DeploymentInfo;
> import org.apache.openejb.core.CoreDeploymentInfo;
>
> @@ -54,7 +56,11 @@
> }
>
> public MessageEndpoint createEndpoint(XAResource xaResource)
> throws UnavailableException {
> - EndpointHandler endpointHandler = new EndpointHandler
> (container, deploymentInfo, instanceFactory, xaResource);
> + // Hack to get GERONIMO-3354 error from not ocurring.
> + //TODO Create an abstraction so that we need not use
> geronimo api classes(NamedXAResource).
> + //TODO Confirm that this is all that is required for
> transaction recovery
> + NamedXAResource wrapper = new WrapperNamedXAResource
> (xaResource, container.getContainerID().toString());
> + EndpointHandler endpointHandler = new EndpointHandler
> (container, deploymentInfo, instanceFactory, wrapper);
> MessageEndpoint messageEndpoint = (MessageEndpoint)
> Proxy.newProxyInstance(classLoader, interfaces, endpointHandler);
> return messageEndpoint;
> }
>
>
NamedXAResource [was: svn commit: r578471]
Posted by Dain Sundstrom <da...@iq80.com>.
I think you're gonna have to ask on the ActiveMQ list, but you may
want to add some more detail to your email (this stuff is complex).
-dain
On Sep 27, 2007, at 1:37 PM, Manu George wrote:
> Hi,
> I got some time today to investigate why the fix i put was failing in
> openejb and found that currently since we were passing an XAResource
> in org.apache.openejb.core.mdb.EndpointFactory.createEndPoint instead
> of a NamedXAResource, the isSameRM(XAResource arg) method check always
> returns false as one of the resources will be an XAResource and the
> other a NamedXAResource.
> This doesn't look correct. The flow never goes inside the if
> condition.
>
> public boolean isSameRM(XAResource other) throws XAException {
> if (other instanceof WrapperNamedXAResource) {
> return
> xaResource.isSameRM(((WrapperNamedXAResource)other).xaResource);
> }
> return false;
> }
> If I pass an instance of WrapperNamedXAResource the flow goes inside
> the if and waits in org.apache.activemq.ActiveMQConnection.isSameRM
> method.
>
> The wait is because waitForBrokerInfo calls brokerInfoReceived.await()
> where brokerInfoReceived is a countdown latch. Once this is waiting it
> never gets resumed.
>
> To trigger it the method onCommand(final Object o) has to be called on
> org.apache.activemq.ActiveMQConnection. Does anyone have an idea of
> when onCommand should be called?
>
> Thanks
> Manu
>
> On 9/23/07, Manu George <ma...@gmail.com> wrote:
>> Thanks for catching that.Thats a whopper of an error. It breaks most
>> Mdb Tests :(. Will investigate why its breaking most of the Mdb
>> tests
>> and post my findings.
>>
>> Regards
>>
>> On 9/23/07, Dain Sundstrom <da...@iq80.com> wrote:
>>> I had to revert this change since it broke the build.
>>>
>>> -dain
>>>
>>> On Sep 22, 2007, at 11:32 AM, manugeorge@apache.org wrote:
>>>
>>>> Author: manugeorge
>>>> Date: Sat Sep 22 11:32:45 2007
>>>> New Revision: 578471
>>>>
>>>> URL: http://svn.apache.org/viewvc?rev=578471&view=rev
>>>> Log:
>>>> Temporary Fix for GERONIMO-3354 - Exception thrown by MDB involved
>>>> in XA transaction.
>>>> Wrapped XAResource to make it NamedXAResource. Container id is
>>>> passed as the name.
>>>>
>>>> Modified:
>>>> openejb/trunk/openejb3/container/openejb-core/src/main/java/
>>>> org/
>>>> apache/openejb/core/mdb/EndpointFactory.java
>>>>
>>>> Modified: openejb/trunk/openejb3/container/openejb-core/src/main/
>>>> java/org/apache/openejb/core/mdb/EndpointFactory.java
>>>> URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/
>>>> openejb-core/src/main/java/org/apache/openejb/core/mdb/
>>>> EndpointFactory.java?rev=578471&r1=578470&r2=578471&view=diff
>>>> ===================================================================
>>>> ===
>>>> ========
>>>> --- openejb/trunk/openejb3/container/openejb-core/src/main/java/
>>>> org/
>>>> apache/openejb/core/mdb/EndpointFactory.java (original)
>>>> +++ openejb/trunk/openejb3/container/openejb-core/src/main/java/
>>>> org/
>>>> apache/openejb/core/mdb/EndpointFactory.java Sat Sep 22 11:32:45
>>>> 2007
>>>> @@ -17,6 +17,8 @@
>>>> */
>>>> package org.apache.openejb.core.mdb;
>>>>
>>>> +import org.apache.geronimo.transaction.manager.NamedXAResource;
>>>> +import
>>>> org.apache.geronimo.transaction.manager.WrapperNamedXAResource;
>>>> import org.apache.openejb.DeploymentInfo;
>>>> import org.apache.openejb.core.CoreDeploymentInfo;
>>>>
>>>> @@ -54,7 +56,11 @@
>>>> }
>>>>
>>>> public MessageEndpoint createEndpoint(XAResource xaResource)
>>>> throws UnavailableException {
>>>> - EndpointHandler endpointHandler = new EndpointHandler
>>>> (container, deploymentInfo, instanceFactory, xaResource);
>>>> + // Hack to get GERONIMO-3354 error from not ocurring.
>>>> + //TODO Create an abstraction so that we need not use
>>>> geronimo api classes(NamedXAResource).
>>>> + //TODO Confirm that this is all that is required for
>>>> transaction recovery
>>>> + NamedXAResource wrapper = new WrapperNamedXAResource
>>>> (xaResource, container.getContainerID().toString());
>>>> + EndpointHandler endpointHandler = new EndpointHandler
>>>> (container, deploymentInfo, instanceFactory, wrapper);
>>>> MessageEndpoint messageEndpoint = (MessageEndpoint)
>>>> Proxy.newProxyInstance(classLoader, interfaces, endpointHandler);
>>>> return messageEndpoint;
>>>> }
>>>>
>>>>
>>>
>>>
>>
Re: svn commit: r578471 - /openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/EndpointFactory.java
Posted by Manu George <ma...@gmail.com>.
Hi,
I got some time today to investigate why the fix i put was failing in
openejb and found that currently since we were passing an XAResource
in org.apache.openejb.core.mdb.EndpointFactory.createEndPoint instead
of a NamedXAResource, the isSameRM(XAResource arg) method check always
returns false as one of the resources will be an XAResource and the
other a NamedXAResource.
This doesn't look correct. The flow never goes inside the if condition.
public boolean isSameRM(XAResource other) throws XAException {
if (other instanceof WrapperNamedXAResource) {
return
xaResource.isSameRM(((WrapperNamedXAResource)other).xaResource);
}
return false;
}
If I pass an instance of WrapperNamedXAResource the flow goes inside
the if and waits in org.apache.activemq.ActiveMQConnection.isSameRM
method.
The wait is because waitForBrokerInfo calls brokerInfoReceived.await()
where brokerInfoReceived is a countdown latch. Once this is waiting it
never gets resumed.
To trigger it the method onCommand(final Object o) has to be called on
org.apache.activemq.ActiveMQConnection. Does anyone have an idea of
when onCommand should be called?
Thanks
Manu
On 9/23/07, Manu George <ma...@gmail.com> wrote:
> Thanks for catching that.Thats a whopper of an error. It breaks most
> Mdb Tests :(. Will investigate why its breaking most of the Mdb tests
> and post my findings.
>
> Regards
>
> On 9/23/07, Dain Sundstrom <da...@iq80.com> wrote:
> > I had to revert this change since it broke the build.
> >
> > -dain
> >
> > On Sep 22, 2007, at 11:32 AM, manugeorge@apache.org wrote:
> >
> > > Author: manugeorge
> > > Date: Sat Sep 22 11:32:45 2007
> > > New Revision: 578471
> > >
> > > URL: http://svn.apache.org/viewvc?rev=578471&view=rev
> > > Log:
> > > Temporary Fix for GERONIMO-3354 - Exception thrown by MDB involved
> > > in XA transaction.
> > > Wrapped XAResource to make it NamedXAResource. Container id is
> > > passed as the name.
> > >
> > > Modified:
> > > openejb/trunk/openejb3/container/openejb-core/src/main/java/org/
> > > apache/openejb/core/mdb/EndpointFactory.java
> > >
> > > Modified: openejb/trunk/openejb3/container/openejb-core/src/main/
> > > java/org/apache/openejb/core/mdb/EndpointFactory.java
> > > URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/
> > > openejb-core/src/main/java/org/apache/openejb/core/mdb/
> > > EndpointFactory.java?rev=578471&r1=578470&r2=578471&view=diff
> > > ======================================================================
> > > ========
> > > --- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/
> > > apache/openejb/core/mdb/EndpointFactory.java (original)
> > > +++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/
> > > apache/openejb/core/mdb/EndpointFactory.java Sat Sep 22 11:32:45 2007
> > > @@ -17,6 +17,8 @@
> > > */
> > > package org.apache.openejb.core.mdb;
> > >
> > > +import org.apache.geronimo.transaction.manager.NamedXAResource;
> > > +import
> > > org.apache.geronimo.transaction.manager.WrapperNamedXAResource;
> > > import org.apache.openejb.DeploymentInfo;
> > > import org.apache.openejb.core.CoreDeploymentInfo;
> > >
> > > @@ -54,7 +56,11 @@
> > > }
> > >
> > > public MessageEndpoint createEndpoint(XAResource xaResource)
> > > throws UnavailableException {
> > > - EndpointHandler endpointHandler = new EndpointHandler
> > > (container, deploymentInfo, instanceFactory, xaResource);
> > > + // Hack to get GERONIMO-3354 error from not ocurring.
> > > + //TODO Create an abstraction so that we need not use
> > > geronimo api classes(NamedXAResource).
> > > + //TODO Confirm that this is all that is required for
> > > transaction recovery
> > > + NamedXAResource wrapper = new WrapperNamedXAResource
> > > (xaResource, container.getContainerID().toString());
> > > + EndpointHandler endpointHandler = new EndpointHandler
> > > (container, deploymentInfo, instanceFactory, wrapper);
> > > MessageEndpoint messageEndpoint = (MessageEndpoint)
> > > Proxy.newProxyInstance(classLoader, interfaces, endpointHandler);
> > > return messageEndpoint;
> > > }
> > >
> > >
> >
> >
>
Re: svn commit: r578471 - /openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/EndpointFactory.java
Posted by Manu George <ma...@gmail.com>.
Thanks for catching that.Thats a whopper of an error. It breaks most
Mdb Tests :(. Will investigate why its breaking most of the Mdb tests
and post my findings.
Regards
On 9/23/07, Dain Sundstrom <da...@iq80.com> wrote:
> I had to revert this change since it broke the build.
>
> -dain
>
> On Sep 22, 2007, at 11:32 AM, manugeorge@apache.org wrote:
>
> > Author: manugeorge
> > Date: Sat Sep 22 11:32:45 2007
> > New Revision: 578471
> >
> > URL: http://svn.apache.org/viewvc?rev=578471&view=rev
> > Log:
> > Temporary Fix for GERONIMO-3354 - Exception thrown by MDB involved
> > in XA transaction.
> > Wrapped XAResource to make it NamedXAResource. Container id is
> > passed as the name.
> >
> > Modified:
> > openejb/trunk/openejb3/container/openejb-core/src/main/java/org/
> > apache/openejb/core/mdb/EndpointFactory.java
> >
> > Modified: openejb/trunk/openejb3/container/openejb-core/src/main/
> > java/org/apache/openejb/core/mdb/EndpointFactory.java
> > URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/
> > openejb-core/src/main/java/org/apache/openejb/core/mdb/
> > EndpointFactory.java?rev=578471&r1=578470&r2=578471&view=diff
> > ======================================================================
> > ========
> > --- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/
> > apache/openejb/core/mdb/EndpointFactory.java (original)
> > +++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/
> > apache/openejb/core/mdb/EndpointFactory.java Sat Sep 22 11:32:45 2007
> > @@ -17,6 +17,8 @@
> > */
> > package org.apache.openejb.core.mdb;
> >
> > +import org.apache.geronimo.transaction.manager.NamedXAResource;
> > +import
> > org.apache.geronimo.transaction.manager.WrapperNamedXAResource;
> > import org.apache.openejb.DeploymentInfo;
> > import org.apache.openejb.core.CoreDeploymentInfo;
> >
> > @@ -54,7 +56,11 @@
> > }
> >
> > public MessageEndpoint createEndpoint(XAResource xaResource)
> > throws UnavailableException {
> > - EndpointHandler endpointHandler = new EndpointHandler
> > (container, deploymentInfo, instanceFactory, xaResource);
> > + // Hack to get GERONIMO-3354 error from not ocurring.
> > + //TODO Create an abstraction so that we need not use
> > geronimo api classes(NamedXAResource).
> > + //TODO Confirm that this is all that is required for
> > transaction recovery
> > + NamedXAResource wrapper = new WrapperNamedXAResource
> > (xaResource, container.getContainerID().toString());
> > + EndpointHandler endpointHandler = new EndpointHandler
> > (container, deploymentInfo, instanceFactory, wrapper);
> > MessageEndpoint messageEndpoint = (MessageEndpoint)
> > Proxy.newProxyInstance(classLoader, interfaces, endpointHandler);
> > return messageEndpoint;
> > }
> >
> >
>
>