Ioannis Alexandrakis created OPENJPA-2507:
---------------------------------------------
Summary: 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.3.0
Environment: openjpa 2.2.0 & 2.3.0, spring-data-jpa up to 1.4.2
Reporter: Ioannis Alexandrakis
Priority: Minor
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)