Somewhat similar story as
NUCCORE-553. We have hanging threads using 100% cpu.
Is it allowed to have multiple threads calling the JDOClassLoaderResolver? Since it's using the non threadsafe WeakValueMap on the offending code.
"pool-1-thread-41" prio=10 tid=0x00007fb60bc5b800 nid=0x63a2 runnable [0x0000000040f75000]
java.lang.Thread.State: RUNNABLE
at java.util.HashMap.get(HashMap.java:303)
at org.datanucleus.util.ReferenceValueMap.get(ReferenceValueMap.java:186)
at org.datanucleus.JDOClassLoaderResolver.classForName(JDOClassLoaderResolver.java:185)
at org.datanucleus.JDOClassLoaderResolver.classForName(JDOClassLoaderResolver.java:415)
at org.datanucleus.store.rdbms.sql.expression.SQLExpressionFactory.newExpression(SQLExpressionFactory.java:159)
at org.datanucleus.store.rdbms.scostore.RDBMSMapEntrySetStore.getSQLStatementForIterator(RDBMSMapEntrySetStore.java:327)
at org.datanucleus.store.rdbms.scostore.RDBMSMapEntrySetStore.iterator(RDBMSMapEntrySetStore.java:222)
- locked <0x0000000783023778> (a org.datanucleus.store.rdbms.scostore.RDBMSMapEntrySetStore)
at org.datanucleus.sco.SCOUtils.populateMapDelegateWithStoreData(SCOUtils.java:985)
at org.datanucleus.sco.backed.Map.loadFromStore(Map.java:291)
at org.datanucleus.sco.backed.Map.load(Map.java:262)
at org.datanucleus.state.JDOStateManagerImpl.loadUnloadedFields(JDOStateManagerImpl.java:1572)
at org.datanucleus.jdo.state.Hollow.transitionRetrieve(Hollow.java:161)
at org.datanucleus.state.AbstractStateManager.retrieve(AbstractStateManager.java:469)
at org.datanucleus.ObjectManagerImpl.retrieveObject(ObjectManagerImpl.java:1047)
at org.datanucleus.jdo.JDOPersistenceManager.jdoRetrieve(JDOPersistenceManager.java:547)
at org.datanucleus.jdo.JDOPersistenceManager.retrieve(JDOPersistenceManager.java:564)
- locked <0x0000000782a57bb8> (a org.datanucleus.jdo.JDOPersistenceManager)
at org.datanucleus.jdo.JDOPersistenceManager.retrieve(JDOPersistenceManager.java:573)
- locked <0x0000000782a57bb8> (a org.datanucleus.jdo.JDOPersistenceManager)
at org.apache.hadoop.hive.metastore.ObjectStore.getMTable(ObjectStore.java:598)