Priority: Major - P3
Affects Version/s: None
New server parameter, maxTransactionLockRequestTimeoutMillis. Start up parameter and settable via setParameter, gettable via getParameter.
Server parameter that dictates the max number of milliseconds that any transaction lock request will wait for lock acquisition. If an operation provides a greater timeout in a lock request, maxTransactionLockRequestTimeoutMillis will override it. If this is set to a negative value, it is inactive and nothing will be overridden. – should probably message this as set maxTransactionLockRequestTimeoutMillis to -1 to unset the override, and forget about the rest of the allowable negative values.
The default of 0 milliseconds will ensure that transaction operations will immediately give up trying to take any lock if it is not immediately available. This prevents deadlocks between transactions. Setting a non-zero, positive value will also help obviate deadlocks, but won't abort a potentially deadlocked transaction operation for however long has been set.
Txns should do no waiting for locks, they should fail the lock acquisition immediately if there's any conflict. They should also abort the transaction if that happens.