CDV ❯ exceptions during hydate fail to clear the "lookup in progress" flag in ClientObjectManagerImpl.lookup(ObjectID id, ObjectID parentContext, boolean noDepth)
-
Bug
-
Status: Closed
-
2 Major
-
Resolution: Fixed
-
-
-
hhuynh
-
Reporter: teck
-
January 23, 2008
-
0
-
Watchers: 0
-
May 16, 2008
-
April 27, 2008
Attachments
Description
An example of an exception occurring is here CDV-590. The side effect is that basicAddLocal() is never called which is where we call markObjectLookupNotInProgress().
It seems that we should be clearing that flag even though we are returning an exception to the application. Without clearing the lookup flag, any other threads that come in to lookup the same object will just hang indefinitely since it appears that a lookup is already in progress – the stack would be like this (for 2.5.0):
“http-80-Processor15” daemon prio=1 tid=0x08d53800 nid=0x7f84 in Object.wait() [0x742fb000..0x742fcfc0] at java.lang.Object.wait(Native Method) - waiting on <0x826866e0> (a com.tc.object.ClientObjectManagerImpl) at java.lang.Object.wait(Object.java:474) at com.tc.object.ClientObjectManagerImpl.lookup(ClientObjectManagerImpl.java:502) - locked <0x826866e0> (a com.tc.object.ClientObjectManagerImpl) at com.tc.object.ClientObjectManagerImpl.lookupObject(ClientObjectManagerImpl.java:418) at com.tc.object.ClientObjectManagerImpl.lookupObject(ClientObjectManagerImpl.java:407) at com.tc.object.TCObjectPhysical.resolveReference(TCObjectPhysical.java:133)