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

Ioannis Alexandrakis edited comment on OPENJPA-2507 at 5/28/14 2:25 PM:
------------------------------------------------------------------------

My initial thought was that since the Deque interface was introduced in java 6, 
there might be compatibility reasons as to why someone would choose Stack over 
Deque.

Glad to be (even of minor) help :)


was (Author: ialex):
My initial thought was that since the Deque interface was introduced in java 6, 
there might be compatibility reasons as to why someone would choose Stack vs 
Deque.

Glad to be (even of minor) help :)

> Weird EmptyStackException in CriteriaQueryImpl
> ----------------------------------------------
>
>                 Key: OPENJPA-2507
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-2507
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: criteria
>    Affects Versions: 2.2.0, 2.3.0
>         Environment: openjpa 2.2.0 & 2.3.0, spring-data-jpa up to 1.4.2
>            Reporter: Ioannis Alexandrakis
>            Priority: Minor
>              Labels: criteria_api, openjpa
>
> Using spring-data-jpa with openjpa, I sometimes encounter a strange error 
> (not all the times, but under heavy load it makes its appearance, sparsely 
> though):
> ....
> Caused by: java.util.EmptyStackException
>         at java.util.Stack.peek(Stack.java:<arbitrary line>)
>         at 
> org.apache.openjpa.persistence.criteria.CriteriaQueryImpl.ctx(CriteriaQueryImpl.java:<arbitrary
>  line>
> ....
> I do not know which behaviour triggers it, however I think it would be an 
> improvement to change (I did not know where exactly to file it, because it is 
> both an improvement and a bug in my opinion), in 
> org.apache.openjpa.persistence.criteria.CriteriaQueryImpl, method: Context 
> ctx(), this:
> return _contexts == null || _contexts.isEmpty() ? null :  _contexts.peek();
> to something like this:
> try {
>       return _contexts == null || _contexts.isEmpty() ? null :  
> _contexts.peek();
> } catch (EmptyStackException e) {
>     return null;
> }
> , in order to prevent a case where multiple threads modify the "_contexts" 
> between the evaluation of the inline "if".
> I am not able to reproduce it all the time, thus I can't create a useful 
> test, neither have I created a patch due to the simplicity of the 'fix'. 
> However I believe it is a harmless fix which could be considered a minor 
> improvement.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to