• Bug
  • Status: Closed
  • 2 Major
  • Resolution: Fixed
  • hhuynh
  • Reporter: teck
  • January 23, 2008
  • 0
  • Watchers: 0
  • May 16, 2008
  • April 27, 2008



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)