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:21:21 +0000 (12:21 +1100)
commit1c65d5f669284f308ba0f64f14395552440e0bd9
tree2b58b075f87dcd09cd0e06745b92f75bc0f4f0c2
parent97ed6e630f5a2469f9377e4e37d3df600551721d
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