Details
-
Bug
-
Status: Closed
-
Critical
-
Resolution: Fixed
-
3.1M1
-
None
-
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Server VM (build 16.3-b01, mixed mode)
SunOS pa-app01 5.10 Generic_142901-12 i86pc i386 i86pc
Description
Per CAY-1213 we are trying to guess if a String constant in an expression is a path or an enum or a constant. This code deadlocks the app for me under load on Java 6:
java.lang.Thread.State: BLOCKED (on object monitor)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at org.apache.cayenne.util.Util.getJavaClass(Util.java:663)
at org.apache.cayenne.util.Util.getClassFieldValue(Util.java:763)
at org.apache.cayenne.exp.parser.ASTObjPath.evaluateNode(ASTObjPath.java:58)
at org.apache.cayenne.exp.parser.SimpleNode.evaluate(SimpleNode.java:335)
at org.apache.cayenne.exp.parser.SimpleNode.evaluateChild(SimpleNode.java:323)
at org.apache.cayenne.exp.parser.ASTEqual.evaluateNode(ASTEqual.java:66)
at org.apache.cayenne.exp.parser.SimpleNode.evaluate(SimpleNode.java:335)
at org.apache.cayenne.exp.Expression.match(Expression.java:367)
at org.apache.cayenne.exp.Expression.filter(Expression.java:389)
at org.apache.cayenne.exp.Expression.filterObjects(Expression.java:378)
I had to locally unroll the following SVN revs to clear the problem: 998620, 1001040, 1001041