lp:~jaypipes/drizzle/xa-transaction-log

Created by Jay Pipes and last modified
Get this branch:
bzr branch lp:~jaypipes/drizzle/xa-transaction-log
Only Jay Pipes can upload to this branch. If you are Jay Pipes please log in for upload directions.

Branch merges

Related bugs

Related blueprints

Branch information

Owner:
Jay Pipes
Project:
Drizzle
Status:
Development

Recent revisions

1318. By Jay Pipes <jpipes@serialcoder>

Fixes a reference-to-reference issue with STL implementations on FreeBSD and CentOS by unrolling a for_each() call. Big thanks to Eric for the help.

1317. By Jay Pipes <jpipes@serialcoder>

Getting tired of CentOS...

1316. By Jay Pipes <jpipes@serialcoder>

More CentOS fixes.

1315. By Jay Pipes <jpipes@serialcoder>

Does CentOS really not know what cstdint is? :(

1314. By Jay Pipes <jpipes@serialcoder>

Resolve more merge conflicts.

1313. By Jay Pipes <jpipes@serialcoder>

Merge trunk and resolve conflicts

1312. By Jay Pipes <jpipes@serialcoder>

Initial checkin of an XA-participating transaction log.

@note

Lots of changes in this patch, and some will look a bit
hackish (in the TransactionServices component) until DDL
operations follow the same transactional code path as
non-DDL operations. This will happen with transactional DDL.

@details

This patch adds a new "XA mode" to the transaction log module
that is enabled using the new --transaction-log-enable-xa switch.

If this switch is set, the transaction log registers itself
with Drizzle transaction manager (TransactionServices component) and
the transaction manager call xaPrepare() and xaCommit() on the
transaction log's TransactionLogResourceManager object, which is
the class which implements the XA API from plugin::XaResourceManager.

In order to enable XA, the transaction log in XA mode is structured
into the main transaction log, which does not change structure at all,
and a scoreboard of undo logs and undo log buffers/indexes. When
the transaction manager calls xaPrepare(), the transaction log
writes an undo log entry containing the transaction message it will
eventually write to the transaction log to one of the undo log segments.

During xaCommit(), the undo log entry is read from the undo log, the
transaction message is written to the transaction log, and the undo log
entry is marked as committed. The undo log entry is then removed from
the in-memory undo log index. In this way, the undo log can contain
entries in either PREPARED or COMMITTED state, and the transaction log
can only contain messages in the COMMITTED state. If a failure occurs
between the time after the transaction log entry was written and the
undo log entry was marked as committed, then during recovery operations,
there will be an undo log entry marked as PREPARED in the undo log, and
the recovery process either decides to remove the committed transaction
message from the main transaction log or mark the undo log entry as
committed (this depends on the recovery heuristic)

1311. By Jay Pipes <jpipes@serialcoder>

Merge replication to transaction work.

1310. By Jay Pipes <jpipes@serialcoder>

Merge bugfix for 534806

1309. By Jay Pipes <jpipes@serialcoder>

Merge trunk

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
Stacked on:
lp:~drizzle-trunk/drizzle/development
This branch contains Public information 
Everyone can see this information.

Subscribers