# HG changeset patch # User jbe # Date 1348574064 -7200 # Node ID 7cad34b945aca7ba9a6fdd16ed2c7247abfbcf6d # Parent dbd237d86a8a5263e8d0536bc0a452fe7503adde# Parent bcbe72e97d27e167f4c951f8626858d68a344025 merge: Switched order of row-level and table-level member locking diff -r dbd237d86a8a -r 7cad34b945ac core.sql --- a/core.sql Tue Sep 25 13:37:27 2012 +0200 +++ b/core.sql Tue Sep 25 13:54:24 2012 +0200 @@ -2999,10 +2999,11 @@ -- is changed, which could affect calculation of snapshots or -- counting of votes. Table "delegation" must be table-level-locked, -- as it also contains issue- and global-scope delegations. - LOCK TABLE "member" IN SHARE MODE; + PERFORM NULL FROM "member" WHERE "active" FOR SHARE; -- NOTE: As we later cause implicit row-level share locks on many - -- active members, we lock them right here to avoid deadlocks - PERFORM NULL FROM "member" WHERE "active" FOR SHARE; + -- active members, we lock them before locking any other table + -- to avoid deadlocks + LOCK TABLE "member" IN SHARE MODE; LOCK TABLE "privilege" IN SHARE MODE; LOCK TABLE "membership" IN SHARE MODE; LOCK TABLE "policy" IN SHARE MODE; diff -r dbd237d86a8a -r 7cad34b945ac update/core-update.v2.0.11-v2.1.0.sql --- a/update/core-update.v2.0.11-v2.1.0.sql Tue Sep 25 13:37:27 2012 +0200 +++ b/update/core-update.v2.0.11-v2.1.0.sql Tue Sep 25 13:54:24 2012 +0200 @@ -431,10 +431,11 @@ -- is changed, which could affect calculation of snapshots or -- counting of votes. Table "delegation" must be table-level-locked, -- as it also contains issue- and global-scope delegations. - LOCK TABLE "member" IN SHARE MODE; + PERFORM NULL FROM "member" WHERE "active" FOR SHARE; -- NOTE: As we later cause implicit row-level share locks on many - -- active members, we lock them right here to avoid deadlocks - PERFORM NULL FROM "member" WHERE "active" FOR SHARE; + -- active members, we lock them before locking any other table + -- to avoid deadlocks + LOCK TABLE "member" IN SHARE MODE; LOCK TABLE "privilege" IN SHARE MODE; LOCK TABLE "membership" IN SHARE MODE; LOCK TABLE "policy" IN SHARE MODE;