Infinite loop on high concurrent access to ComplexTypeImpl.getField
-------------------------------------------------------------------
Key: NXP-8614
URL: https://jira.nuxeo.com/browse/NXP-8614
Project: Nuxeo Enterprise Platform
Issue Type: Bug
Components: Core SQL Storage
Affects Versions: 5.5, 5.4.2, 5.3.2
Reporter: Benoit Delbosc
On high concurrency access to ComplexTypeImpl.getField can lead to infinite
loop on HashMap.get.
The result is that all thread will be blocked in HashMap.get consuming all CPU
without end.
Looking at a thread dump will show many threads like this
{code}
ajp-XXXXX-8009-49" daemon prio=10 tid=0x000000005052a800 nid=0x31c1 runnable
[0x0000000048263000]
java.lang.Thread.State: RUNNABLE
at java.util.HashMap.get(HashMap.java:303)
at
org.nuxeo.ecm.core.schema.types.ComplexTypeImpl.getField(ComplexTypeImpl.java:103)
at
org.nuxeo.ecm.core.schema.types.CompositeTypeImpl.getField(CompositeTypeImpl.java:123)
at
org.nuxeo.ecm.core.storage.sql.coremodel.SQLSession.makeProperties(SQLSession.java:846)
at
org.nuxeo.ecm.core.storage.sql.coremodel.SQLSession.makeProperty(SQLSession.java:823)
at
org.nuxeo.ecm.core.storage.sql.coremodel.SQLComplexProperty.getProperty(SQLComplexProperty.java:119)
at
org.nuxeo.ecm.core.storage.sql.coremodel.SQLComplexProperty.setPropertyValue(SQLComplexProperty.java:209)
at
org.nuxeo.ecm.core.storage.sql.coremodel.SQLDocumentLive.writeDocumentPart(SQLDocumentLive.java:171)
at
org.nuxeo.ecm.core.api.AbstractSession.writeModel(AbstractSession.java:495)
at
org.nuxeo.ecm.core.api.AbstractSession.createDocument(AbstractSession.java:816)
at
org.nuxeo.ecm.core.api.ejb.DocumentManagerBean.createDocument(DocumentManagerBean.java:261)
{code}
This happens because HashMap is not thread safe and access should be
synchronized.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
_______________________________________________
ECM-tickets mailing list
[email protected]
http://lists.nuxeo.com/mailman/listinfo/ecm-tickets