diff --git a/src/jrd/cch.cpp b/src/jrd/cch.cpp index a21e8ebe75..86d97a6773 100644 --- a/src/jrd/cch.cpp +++ b/src/jrd/cch.cpp @@ -522,8 +522,6 @@ bool CCH_exclusive_attachment(thread_db* tdbb, USHORT level, SSHORT wait_flag, S { try { - tdbb->checkCancelState(true); - bool found = false; for (Jrd::Attachment* other_attachment = attachment->att_next; other_attachment; other_attachment = other_attachment->att_next) @@ -574,6 +572,7 @@ bool CCH_exclusive_attachment(thread_db* tdbb, USHORT level, SSHORT wait_flag, S if (remaining >= CCH_EXCLUSIVE_RETRY_INTERVAL) { SyncUnlockGuard unlock(exLock ? (*exGuard) : dsGuard); + tdbb->reschedule(true); Thread::sleep(CCH_EXCLUSIVE_RETRY_INTERVAL * 1000); }