Kbase P1165: mtusrwake: user <num> already waked, queue <num> ... (3724)
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  12/14/2004 |
|
Status: Unverified
FACT(s) (Environment):
Progress 9.1B
SYMPTOM(s):
Error: mtusrwake: user <num> already waked, queue <num> wake <num>. (3724)
Database is down.
Unable to install a 9.1B patch.
CAUSE:
This problem is a race condition that occurs with several users running against the database. A user releases a latch for a resource that they were using (for example, the transaction end lock), and the broker then goes to wake up the next user in the queue waiting to get that latch. The problem is that, according to the information the broker has, the 'woken up' user is found to be already awake. This indicates a fundamental integrity problem such that the queues can no longer be trusted to hold accurate information. So, the database is brought down.
-- Here is an Example of this behavior:
User A goes to get a record lock, finds that the record is already locked (by User B), and waits for the record to be released.
At the same (relatively speaking) time, User A's lock times out, so the watchdog wakes him up and tells him that his lock has expired. So he must remove himself from the wait queue.
User B then finishes with the record, and pings User A so that he (A) can go get and lock the record.
The watchdog woke up user A first, so when B gets to the point of trying to wake up User A, he finds that User A has already been woken up, which shouldn't happen, and the database is shut down.
This is a rare timing condition that only happens when several users are running against the database
FIX:
This has been fixed in 9.1C