[
https://issues.apache.org/jira/browse/TOMEE-2057?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16046312#comment-16046312
]
ASF GitHub Bot commented on TOMEE-2057:
---------------------------------------
GitHub user SvetlinZarev opened a pull request:
https://github.com/apache/tomee/pull/70
TOMEE-2057 - Eclipselink's synchronization must be executed after
openejb's one
Eclipselink's synchronization must be executed after openejb's
SessionSynchronizationCoordinator synchronization
Bug: TOMEE-2057
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/SvetlinZarev/tomee eclipselink_fix
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/tomee/pull/70.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #70
----
commit 91f788d66ae37a7d1718998f41c0f06e885ca7c0
Author: Svetlin Zarev <[email protected]>
Date: 2017-06-12T08:02:10Z
Eclipselink's synchrnization must be executed after openejb's
SessionSynchronizationCoordinator synchronization
Bug: TOMEE-2057
----
> @BeforeCompletion callback issue
> ---------------------------------
>
> Key: TOMEE-2057
> URL: https://issues.apache.org/jira/browse/TOMEE-2057
> Project: TomEE
> Issue Type: Bug
> Components: TomEE Core Server
> Reporter: Svetlin Zarev
> Attachments: sample-v2.zip, sample.zip
>
>
> I have a @Stateful bean which has @AfterBegin & @BeforeCompletion callbacks
> defined. It tries to persist a JPA entity in each one of them:
> {code}
> @Stateful
> public class SessionBean implements Serializable {
> public static final int ID_AFTER_BEGIN = 1234;
> public static final int ID_BEFORE_COMPLETION = 5678;
> public static final int ID_TX_ENTITY = 9999;
> @PersistenceContext
> EntityManager em;
> @AfterBegin
> public void afterBegin() {
> final TestEntity entity = new TestEntity(ID_AFTER_BEGIN, "On
> AFTER_BEGIN");
> em.persist(entity);
> if(null == em.find(TestEntity.class, ID_AFTER_BEGIN)){
> throw new IllegalStateException("Entity not persisted in
> AFTER_BEGIN");
> }
> }
> @BeforeCompletion
> public void beforeCompletion() {
> final TestEntity entity = new TestEntity(ID_BEFORE_COMPLETION, "On
> BEFORE_COMPLETION");
> em.persist(entity);
> if(null == em.find(TestEntity.class, ID_BEFORE_COMPLETION)){
> throw new IllegalStateException("Entity not persisted in
> BEFORE_COMPLETION");
> }
> }
> @TransactionAttribute(TransactionAttributeType.REQUIRED)
> public void txRequired() {
> final TestEntity entity = new TestEntity(ID_TX_ENTITY, "On
> TX_REQUIRED");
> em.persist(entity);
> if(null == em.find(TestEntity.class, ID_TX_ENTITY)){
> throw new IllegalStateException("Entity not persisted in
> TX_REQUIRED");
> }
> }
> }
> {code}
> During the transaction everything seems fine, but after the transaction
> EntityManger.find() returns null for the bean persisted during
> @BeforeCompletion
> I've attached sample app that reproduces the issue.
> *Expected result:*
> The output does not contain any failed tests.
> *Actual result:*
> {code}
> TESTING TX_REQUIRED WITHOUT EXISTING TRANSACTION
> [TEST FAILED] Expecting entity for BEFORE_COMPLETION instead of: null
> {code}
> PS: I observe a similar issue for @AfterBegin in another case, but I'm not
> able to extract a reproducible test case from it. But I thinkthe two issues
> are linked
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)