Jazz Forum Welcome to the Jazz Community Forum Connect and collaborate with IBM Engineering experts and users

Is there a race condition in code to read custom attribute values of type enumeration?

All,

we have an automated client which connects to our RTC v5.0 server. Among other things, it reads custom attributes for specific work items. At times, multiple instances of this automated client access the server in parallel. These parallel accesses seem to hit a race condition:

Exception stack trace of thread 1:
 Exception message is: null

 Stack Trace: java.lang.NullPointerException
        at org.eclipse.emf.common.util.BasicEMap.entryForKey(BasicEMap.java:1390)
        at org.eclipse.emf.common.util.BasicEMap.get(BasicEMap.java:559)
        at org.eclipse.emf.common.util.BasicEMap$DelegatingMap.get(BasicEMap.java:794)
        at com.ibm.team.repository.common.model.impl.ItemImpl.getStringExtension(ItemImpl.java:1223)
        at com.ibm.team.workitem.common.internal.model.impl.WorkItemImpl.getEnumeration(WorkItemImpl.java:3764)
        at com.ibm.team.workitem.common.internal.model.impl.WorkItemImpl.getValue(WorkItemImpl.java:2858)
        at sun.reflect.GeneratedMethodAccessor117.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
        at java.lang.reflect.Method.invoke(Method.java:611)
        at com.ibm.team.repository.common.internal.util.ItemStore$ItemInvocationHandler.invoke(ItemStore.java:597)
        at com.sun.proxy.$Proxy19.getValue(Unknown Source)

Exception stack trace of thread 2:
Exception message is: null

 Stack Trace: java.lang.ArrayIndexOutOfBoundsException
        at org.eclipse.emf.common.util.BasicEList.grow(BasicEList.java:736)
        at org.eclipse.emf.common.util.BasicEList.addUnique(BasicEList.java:422)
        at org.eclipse.emf.common.util.AbstractEList.add(AbstractEList.java:307)
        at org.eclipse.emf.common.util.BasicEMap.doPut(BasicEMap.java:616)
        at org.eclipse.emf.common.util.BasicEMap.ensureEntryDataExists(BasicEMap.java:247)
        at org.eclipse.emf.common.util.BasicEMap.get(BasicEMap.java:556)
        at org.eclipse.emf.common.util.BasicEMap$DelegatingMap.get(BasicEMap.java:794)
        at com.ibm.team.repository.common.model.impl.ItemImpl.getStringExtension(ItemImpl.java:1223)
        at com.ibm.team.workitem.common.internal.model.impl.WorkItemImpl.getEnumeration(WorkItemImpl.java:3764)
        at com.ibm.team.workitem.common.internal.model.impl.WorkItemImpl.getValue(WorkItemImpl.java:2858)
        at sun.reflect.GeneratedMethodAccessor117.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
        at java.lang.reflect.Method.invoke(Method.java:611)
        at com.ibm.team.repository.common.internal.util.ItemStore$ItemInvocationHandler.invoke(ItemStore.java:597)
        at com.sun.proxy.$Proxy19.getValue(Unknown Source)

Both threads hit these exception at the very same location. Any ideas what is wrong here?
(Because the second stack trace contains method "grow", I suspected that maybe a value was written to the fied which is not defined in the enumeration type, but DB analysis shows that this is not the case.)

Thanks in advance,
Markus




0 votes


Be the first one to answer this question!

Register or log in to post your answer.

Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.

Search context
Follow this question

By Email: 

Once you sign in you will be able to subscribe for any updates here.

By RSS:

Answers
Answers and Comments
Question details

Question asked: Jan 12 '15, 9:12 a.m.

Question was seen: 2,969 times

Last updated: Jan 12 '15, 9:12 a.m.

Confirmation Cancel Confirm