company logo

Externally stored transaction

Long transactions, which may take some hours, might become very large and are difficult to store in memory. In order to provide performant transaction mechanisms in this case, too, transactions might be stored to disk.

Usually, external transactions are not nested, but one always may begin a pool or external transaction within an external transaction.

Except, that external transactions are stored to different media, they behave like pool transactions.

... fragment ( Property &person ) {

  person.objectSpace().beginTransaction(true); // external transaction

  if ( updatePersonIncome(person) )  // updates income for all persons

    person.objectSpace().rollBack(); // error encountered

  else

    person.objectSpace().commitTransaction();

}

Notes:

External transactions cannot be used in connection with replication server. Since replication server behaves critical for very long transactions, one should not create long transactions when running a replication server, and thus, external transactions do not make sense in this case.