tomee-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Romain Manni-Bucau (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (TOMEE-2057) @BeforeCompletion callback issue
Date Fri, 09 Jun 2017 09:34:19 GMT

    [ https://issues.apache.org/jira/browse/TOMEE-2057?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16044216#comment-16044216
] 

Romain Manni-Bucau commented on TOMEE-2057:
-------------------------------------------

jpa and ejb will register a synchonization so order depends the access order i think

> @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.3.15#6346)

Mime
View raw message