Timeout Long-Running Transactions
A buggy client program can begin a transaction and never finish it. This client will prevent all other clients from making progress. To avoid locking up a storage indefinitely, we propose to add an optional timeout that will abort transactions that do no complete within a set time.
The timeout would be integrated with the ZEO storage server. The server would close the client connection after it times out. This can have unfortunate effects at the client, e.g. hosing a storage. However, this seems better than causing the server to hang.
It should be possible to set transaction metadata to allow long running transactions to complete without timing out when the user expects the transaction to take a long time.