Consultor Eletrônico



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