[DM] Earlier commitlog creation to prevend commit locks.

Bug #374737 reported by Andreas Jung
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Fix Released

Bug Description

2. Introduction

Under Solaris (32 bit), a FILE structure has only 8 bits to represent the file descriptor. This means, that a ZEO can effectively only use 256 file descriptors under Solaris (32 bit). Especially, the creation of temporary files, such as for the commitlog, has a high chance to fail in "fdopen" with a "ressource temporarily unavailable" (what an error message for the fact that the file descriptor is too large to fit into the File structure!).

The commitlog used to be created only after a lock was acquired. Due to a bug in the ZEO protocol a failure after this lock acquisition causes ZEO to report that the client already has started a transaction when the client later tries to commit a transaction. I.e. ZEO is unable to recover from such failures. A ZEO restart is necessary to get rid of this error state.

3. Feature

Create the commitlog before commit lock acquisition in order to affect only one commit trial rather than all subsequent ones.

Revision history for this message
Andreas Jung (ajung) wrote :
Revision history for this message
Jim Fulton (jim-zope) wrote :

If only there was a test to go with this.

The more serious problem, which is reported elsewhere, is that errors during TPC leave the client in a bad state.

Revision history for this message
Jim Fulton (jim-zope) wrote :

Fixed in a slightly different way. I moved the assignment of self.transaction to the end of tpc_begin. The important invariant is that the client and server agree on whether TPC has started. A failure after in tpc_begin after the server enters TPC violates this.

Changed in zodb:
status: New → Fix Committed
Revision history for this message
Tres Seaver (tseaver) wrote :

Fix released with ZODB 3.9.0:


Changed in zodb:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.