deltaspike-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From titou10 <>
Subject Re: Extended EntityManager
Date Sun, 19 Apr 2015 17:20:37 GMT

Le 2015-04-19 11:24, Mark Struberg a écrit :
> Hi Dennis!
>> Have you *ever* hit this situation?
> Yes, under heavy load it happens pretty often actually (I’m talking about multi-million
request/day public internet apps). It also depends a bit on the JPA container you use. From
the pure spec it is forbitten to touch the EntityManager in parallel threads and also to touch
managed (‚attached’) entities in parallel threads. What JPA container are you using?
Here we are talking about one ONE EM per ONE CDI Conversation.
So you have  applications with multi-million request/day concurrently in one CDI Conversation
that may lead *often* to a misuse of 
the EM ?
Impressive... How do you do that: Ajax requests? Proprietary client javascript framework?
Or you are talking about *not closed EM* because the @PreDestroy callback method has not been
called in some particulat situation 
(sendRedirect is called and the new request is processed before the initial request)?
Sorry, Mark but you lost me.....

>> Also, who programs a „sendRedirect" in the middle of a method that then performs
database access ..?
> You don’t need to do database access even. It is enough that the entitymanager is not
closed as per the spec.
>> Even so, this is pure theory, the chance are so tiny this happens…
> Then I had bad luck - quite often ;)
>> And If you think this *may* happen within one conversation, then change the way redirects
are send, or the way database is accessed in parallel in Ajax requests. not the way EM is
used IMHO
> That might be a solution. Or force the EM to get closed before the redirect.
>> Also your remark on „unfinished thread" is valid for ANY components/resources held
in ConversationScope, not just the EM, true?
> Yes, but most components have no problems with getting accessed in parallel. For managed
Entities and EntityManagers it’s explicitly forbidden by the JPA spec.
> LieGrue,
> strub

View raw message