[
https://issues.jboss.org/browse/JBTM-1766?page=com.atlassian.jira.plugin....
]
Mark Little commented on JBTM-1766:
-----------------------------------
Hi Tom. I have an example here that shows the last transaction is not being called, which
is why the state remains at 1 instead of rolling back to 0. I'll illustrate the
example here so you can reproduce if you want:
System.err.println("**transaction "+act);
act.begin();
ai.set(1);
assertEquals(ai.get(), 1);
System.err.println("**rolling back "+act);
System.err.println("**using "+act.getClass());
act.abort();
I then put a print statement in abort:
public int abort ()
{
System.err.println("**in abort");
int status = super.cancel();
/*
* Now remove this thread from the action state.
*/
ThreadActionData.popAction();
TransactionReaper.transactionReaper().remove(this);
return status;
}
and got the following output:
**created org.jboss.stm.internal.types.AtomicIntegerImpl@3aeacb9c
**invoke on org.jboss.stm.internal.reflect.InvocationHandler@cdd8cfc
**transaction BasicAction: 0:ffff0a517f65:d29e:51b5efa8:7 status: ActionStatus.CREATED
Jun 10, 2013 4:24:24 PM com.arjuna.ats.arjuna.recovery.TransactionStatusManager
addService
INFO: ARJUNA012163: Starting service com.arjuna.ats.arjuna.recovery.ActionStatusService on
port 53919
Jun 10, 2013 4:24:24 PM
com.arjuna.ats.internal.arjuna.recovery.TransactionStatusManagerItem <init>
INFO: ARJUNA012337: TransactionStatusManagerItem host: 127.0.0.1 port: 53919
Jun 10, 2013 4:24:24 PM com.arjuna.ats.arjuna.recovery.TransactionStatusManager start
INFO: ARJUNA012170: TransactionStatusManager started on port 53919 and host 127.0.0.1 with
service com.arjuna.ats.arjuna.recovery.ActionStatusService
**invoke on org.jboss.stm.internal.reflect.InvocationHandler@cdd8cfc
**setlock org.jboss.stm.internal.reflect.InvocationHandler@cdd8cfc
**save_state org.jboss.stm.internal.proxy.LockManagerProxy@54e156e1 and BasicAction:
0:ffff0a517f65:d29e:51b5efa8:7 status: ActionStatus.RUNNING
**invoke on org.jboss.stm.internal.reflect.InvocationHandler@cdd8cfc
**setlock org.jboss.stm.internal.reflect.InvocationHandler@cdd8cfc
**rolling back BasicAction: 0:ffff0a517f65:d29e:51b5efa8:7 status: ActionStatus.RUNNING
**using class com.arjuna.ats.arjuna.AtomicAction
**done
Ignore the invoke prints for now. But you can see that there's no print from abort.
STM test failure with emma: Failed tests:
testTransaction(org.jboss.stm.types.AtomicIntegerUnitTest): expected:<1> but
was:<0>
--------------------------------------------------------------------------------------------------------------------------------
Key: JBTM-1766
URL:
https://issues.jboss.org/browse/JBTM-1766
Project: JBoss Transaction Manager
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: STM, Testing
Reporter: Tom Jenkinson
Assignee: Mark Little
Priority: Minor
Fix For: 5.0.0.M4
Attachments: org.jboss.stm.types.AtomicIntegerUnitTest-output (emma off).txt,
org.jboss.stm.types.AtomicIntegerUnitTest-output (emma on).txt
Most tests run OK, just this one:
Tests run: 2, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.548 sec <<<
FAILURE!
testTransaction(org.jboss.stm.types.AtomicIntegerUnitTest) Time elapsed: 0.328 sec
<<< FAILURE!
junit.framework.AssertionFailedError: expected:<1> but was:<0>
at junit.framework.Assert.fail(Assert.java:50)
at junit.framework.Assert.failNotEquals(Assert.java:287)
at junit.framework.Assert.assertEquals(Assert.java:67)
at junit.framework.Assert.assertEquals(Assert.java:199)
at junit.framework.Assert.assertEquals(Assert.java:205)
at
org.jboss.stm.types.AtomicIntegerUnitTest.testTransaction(AtomicIntegerUnitTest.java:81)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at junit.framework.TestCase.runTest(TestCase.java:168)
at junit.framework.TestCase.runBare(TestCase.java:134)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:243)
at junit.framework.TestSuite.run(TestSuite.java:238)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
at
org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at
org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
at
org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
at
org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
at
org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
Could it be caused by emma altering the bytecode (which it has to do)?
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira