[ZODB-Dev] ZEO: StorageTransactionError

fzachman fzachman at codeit.com
Tue May 27 17:15:22 EDT 2003


Hello,

We recently upgraded one of our clients ZEO clusters from Zope 2.5 to
Zope 2.6.  The impetus behind this was a need to share sessions amongst
the clients via a Berkeley storage backend. (So our ZEO server is using
vanilla ZODB with a Berkeley storage mounted inside of it to hold the
session objects.)

Later the same night of the upgrade one of our users got this error:

StorageTransactionError: Multiple simultaneous tpc_begin requests from
one client.

After this the site was locked up and the person on staff set them back
up to using the old system, where it's back and running again with no
problems.

I tried running the usual queries on this and couldn't find anything
short of cvs checkin logs.  The offending bit of code seems to be in the
StorageServer's tpc_begin:

    def tpc_begin(self, id, user, description, ext, tid, status):
        if self.read_only:
            raise ReadOnlyError()
        if self.transaction is not None:
            if self.transaction.id == id:
                self.log("duplicate tpc_begin(%s)" % repr(id))
                return
            else:
                raise StorageTransactionError("Multiple simultaneous
tpc_begin"
                                              " requests from one
client.")

I confess I'm not entirely sure what's going on here as I've just taken
to maintaining this setup and I'm not all that familiar with ZEO.  It
seems that the client tried to begin more than once, and the second (or
x subsequent) time it somehow had a different transaction id?

I'm not sure if this is an issue with Zope 2.6.1 or with the use of the
Berkeley DB. (I hate upgrading 2 things at once. ;)

Has anyone else encountered this?

Oh, and for completeness:

Redhat 8.0
Python 2.1.3
ZEO 2.0.1b
Zope 2.6.1

Any help would be greatly appreciated.

Forest




More information about the ZODB-Dev mailing list