• Rusty Russell's avatar
    tdb: handle processes dying during transaction commit. · 729fc5b9
    Rusty Russell authored
    tdb transactions were designed to be robust against the machine
    powering off, but interestingly were never designed to handle the case
    where an administrator kill -9's a process during commit.  Because
    recovery is only done on tdb_open, processes with the tdb already
    mapped will simply use it despite it being corrupt and needing
    recovery.
    
    The solution to this is to check for recovery every time we grab a
    data lock: we could have gained the lock because a process just died.
    This has no measurable cost: here is the time for tdbtorture -s 0 -n 1
    -l 10000:
    
    Before:
    	2.75 2.50 2.81 3.19 2.91 2.53 2.72 2.50 2.78 2.77 = Avg 2.75
    
    After:
    	2.81 2.57 3.42 2.49 3.02 2.49 2.84 2.48 2.80 2.43 = Avg 2.74
    Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
    729fc5b9
external-transaction.c 4.62 KB