LockWait congestion.
authorRonnie Sahlberg <ronniesahlberg@gmail.com>
Mon, 24 Jan 2011 00:42:50 +0000 (11:42 +1100)
committerRonnie Sahlberg <ronniesahlberg@gmail.com>
Mon, 24 Jan 2011 01:20:14 +0000 (12:20 +1100)
commit8a143a97a313a2e50fb409f6382c759dbd14cdcd
tree55132922e77294932448ae3cf81ea4c57198ea63
parent68064f7431d1f25e83dc835adeac0b3322fc819e
LockWait congestion.

Add a dlist to track all active lockwait child processes.
Everytime creating a new lockwait handle, check if there is already an
active lockwait process for this database/key and if so,
send the new request straight to the overflow queue.

This means we will only have one active lockwaic child process for a certain key,
even if there were thousands of fetch-lock requests for this key.

When the lockwait processing finishes for the original request, the processing in d_overflow() will automagically process all remaining keys as well.

Add back a --nosetsched argument to make it easier to run under gdb
include/ctdb_private.h
server/ctdb_lockwait.c
server/ctdbd.c