geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David Jencks (JIRA)" <>
Subject [jira] Commented: (GERONIMO-4184) In-doubt transaction Id's could be reused during server startup
Date Thu, 17 Mar 2011 03:38:29 GMT


David Jencks commented on GERONIMO-4184:

I think this patch will break recovery.  The first 8 bytes of the byte arrays in the xid are
a long counter, the rest is the tmid.  Recovery needs to be able to determine if an xid coming
back from an XAResource came from this tm.  It does this by matching the bytes after 8 in
the global xid with the baseid in the XidFactory.  If the base id is different every time
you start the tm, there's no way to determine if a branch that has been prepared on an XAResource
but not recorded in the tm log came from this tm.

I think the problem here is that our documentation is not sufficiently insistent that you
NEED to configure multiple geronimo servers using the same RM with DIFFERENT tmids.

As long as the above is followed, we could randomize the most significant 2 bytes of the long
counter.  However I think it would be better to track the counter persistently such as by
reserving blocks of say 1024 ids and recording this persistently either in a log record or
in a separate file.

> In-doubt transaction Id's could be reused during server startup
> ---------------------------------------------------------------
>                 Key: GERONIMO-4184
>                 URL:
>             Project: Geronimo
>          Issue Type: Bug
>      Security Level: public(Regular issues) 
>          Components: transaction manager
>    Affects Versions: 2.0, 2.0.1, 2.0.2, 2.1, 2.1.1, 2.1.4
>            Reporter: Kevan Miller
>             Fix For: Wish List
>         Attachments: GERONIM-4184.patch
> During server restart, we may reuse an Xid for a transaction which is in-doubt. Potentially
confusing a resource manager. We need to insure this does not occur. Simple way is to remember
the largest Xid in tran log and start with a larger number. 

This message is automatically generated by JIRA.
For more information on JIRA, see:

View raw message