[
https://issues.apache.org/jira/browse/OPENJPA-359?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Albert Lee updated OPENJPA-359:
-------------------------------
Attachment: OPENJPA-359.2.patch
Patrick,
Thanks for the hint... I am able to get around the 1.4 compile and Reflection
"problems" by new'ing a single instance of TimestampHelper with an override to
Timestamp5elper at runtime if run in Java 5.
Please review the current solution.
Albert Lee.
> OptimisticLockException NOT thrown for entity using Timestamp Version when
> update from concurrent persistence contexts
> ----------------------------------------------------------------------------------------------------------------------
>
> Key: OPENJPA-359
> URL: https://issues.apache.org/jira/browse/OPENJPA-359
> Project: OpenJPA
> Issue Type: Bug
> Components: jdbc
> Affects Versions: 1.0.0
> Environment: WIntel 32
> Reporter: Albert Lee
> Assignee: Albert Lee
> Priority: Minor
> Attachments: OPENJPA-359.1.patch, OPENJPA-359.2.patch,
> OPENJPA-359.patch
>
>
> We ran a test using Timestamp as the version field in an entity, the
> following (pseudo) test failed when an OptimisticLockException is expected:
> em1.persist( e0(pk1) );
> e1 = em1.find(pk1);
> e2 = em2.find(pk1);
> e1.setAttr( "new1");
> e2.setAttr( "new2");
> em1.merge( e1 );
> em2.merge( e2 ); <<<< Expect an OptimisticLockException
> The cause of this problem is because the TimestampVersionStrategy.nextVersion
> returns a java.sql.Timestamp(System.currentTimeMillis()); In the Wintel
> environment, the currentTimeMillis() only has approximately 15ms resolution.
> When 2 subsequent Timestamp version objects are requested within this 15ms
> interval, both has the same version value. Therefore the em2.merge does not
> detected the versions difference between o1 and o2, hence no exception is
> thrown.
> Due to this behavior, the same test case may failed intermittenly depends on
> the currentTimeMillis() resolution and the time when a timestamp version is
> created. From some preliminary tests, the resolution for wintel, linux and
> z/os are about 15ms, 2ms and 2ms respectively.
>
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.