{
// No transaction context. Create or find a raw store transaction,
// make a context for it, and push the context. Note this puts the
// raw store transaction context above the access context, which is
// required for error handling assumptions to be correct.
Transaction rawtran =
rawstore.startGlobalTransaction(
cm, format_id, global_id, branch_id);
xa_tc = new RAMTransaction(this, rawtran, null);
rtc =
new RAMTransactionContext(
cm,
AccessFactoryGlobals.RAMXACT_CONTEXT_ID,
xa_tc, false /* abortAll */);
// RESOLVE - an XA transaction can only commit once so, if we
// acquire readlocks.
if (xactProperties != null)
{
rawtran.setup(xa_tc);
// HACK - special support has been added to the commitNoSync
// of a global xact, to allow committing of read only xact,
// which will allow subsequent activity on the xact keeping
// the same global transaction id.
xa_tc.commitNoSync(
TransactionController.RELEASE_LOCKS |
TransactionController.READONLY_TRANSACTION_INITIALIZATION);
}
rawtran.setDefaultLockingPolicy(system_default_locking_policy);
// HACK - special support has been added to the commitNoSync
// of a global xact, to allow committing of read only xact,
// which will allow subsequent activity on the xact keeping
// the same global transaction id.