mirror of
https://github.com/corda/corda.git
synced 2025-01-06 05:04:20 +00:00
check again for entry in monitorMap after entering the exclusive state in objectMonitor() in case another thread beat us to creating a monitor for the object
This commit is contained in:
parent
d24b633665
commit
d8374a76e2
@ -2715,6 +2715,17 @@ objectMonitor(Thread* t, object o, bool createNew)
|
|||||||
|
|
||||||
ENTER(t, Thread::ExclusiveState);
|
ENTER(t, Thread::ExclusiveState);
|
||||||
|
|
||||||
|
p = hashMapFind(t, t->m->monitorMap, o, objectHash, objectEqual);
|
||||||
|
if (p) {
|
||||||
|
if (DebugMonitors) {
|
||||||
|
fprintf(stderr, "found monitor %p for object %x\n",
|
||||||
|
static_cast<System::Monitor*>(pointerValue(t, p)),
|
||||||
|
objectHash(t, o));
|
||||||
|
}
|
||||||
|
|
||||||
|
return static_cast<System::Monitor*>(pointerValue(t, p));
|
||||||
|
}
|
||||||
|
|
||||||
System::Monitor* m;
|
System::Monitor* m;
|
||||||
System::Status s = t->m->system->make(&m);
|
System::Status s = t->m->system->make(&m);
|
||||||
expect(t, t->m->system->success(s));
|
expect(t, t->m->system->success(s));
|
||||||
|
Loading…
Reference in New Issue
Block a user