Class OTransactionOptimistic

All Implemented Interfaces:
OTransaction, OTransactionInternal
Direct Known Subclasses:
OTransactionOptimisticClient, OTransactionOptimisticDistributed, OTransactionOptimisticProxy, OTransactionOptimisticServer

public class OTransactionOptimistic extends OTransactionRealAbstract
  • Field Details

    • changed

      protected boolean changed
  • Constructor Details

  • Method Details

    • begin

      public void begin()
    • commit

      public void commit()
    • commit

      public void commit(boolean force)
      The transaction is reentrant. If begin() has been called several times, the actual commit happens only after the same amount of commit() calls
      Parameters:
      force - commit transaction even
    • commitPreallocate

      public void commitPreallocate()
    • amountOfNestedTxs

      public int amountOfNestedTxs()
    • rollback

      public void rollback()
    • internalRollback

      public void internalRollback()
      Specified by:
      internalRollback in class OTransactionAbstract
    • rollback

      public void rollback(boolean force, int commitLevelDiff)
    • loadRecord

      public ORecord loadRecord(ORID rid, ORecord iRecord, String fetchPlan, boolean ignoreCache, boolean loadTombstone, OStorage.LOCKING_STRATEGY lockingStrategy)
    • loadRecord

      public ORecord loadRecord(ORID rid, ORecord iRecord, String fetchPlan, boolean ignoreCache, boolean iUpdateCache, boolean loadTombstone, OStorage.LOCKING_STRATEGY lockingStrategy)
    • loadRecordIfVersionIsNotLatest

      public ORecord loadRecordIfVersionIsNotLatest(ORID rid, int recordVersion, String fetchPlan, boolean ignoreCache) throws ORecordNotFoundException
      Throws:
      ORecordNotFoundException
    • reloadRecord

      public ORecord reloadRecord(ORID rid, ORecord iRecord, String fetchPlan, boolean ignoreCache)
    • reloadRecord

      public ORecord reloadRecord(ORID rid, ORecord passedRecord, String fetchPlan, boolean ignoreCache, boolean force)
    • loadRecord

      public ORecord loadRecord(ORID rid, ORecord record, String fetchPlan, boolean ignoreCache)
    • deleteRecord

      public void deleteRecord(ORecord iRecord, ODatabase.OPERATION_MODE iMode)
      Description copied from interface: OTransaction
      Deletes the given record in this transaction.
      Parameters:
      iRecord - the record to delete.
      iMode - the operation mode.
    • saveRecord

      public ORecord saveRecord(ORecord iRecord, String iClusterName, ODatabase.OPERATION_MODE iMode, boolean iForceCreate, ORecordCallback<? extends Number> iRecordCreatedCallback, ORecordCallback<Integer> iRecordUpdatedCallback)
      Description copied from interface: OTransaction
      Saves the given record in this transaction.
      Parameters:
      iRecord - the record to save.
      iClusterName - record's cluster name.
      iMode - the operation mode.
      iForceCreate - the force creation flag, true to force the creation of the record, false to allow updates.
      iRecordCreatedCallback - the callback to invoke when the record save operation triggered the creation of the record.
      iRecordUpdatedCallback - the callback to invoke when the record save operation triggered the update of the record.
      Returns:
      the record saved.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • isUsingLog

      public boolean isUsingLog()
      Description copied from interface: OTransactionInternal
      Retrieve if log is enabled for the transaction
    • setUsingLog

      public void setUsingLog(boolean useLog)
      Description copied from interface: OTransaction
      If you set this flag to false, you are unable to
      1. Rollback data changes in case of exception
      2. Restore data in case of server crash

      So you practically unable to work in multithreaded environment and keep data consistent.

    • setStatus

      public void setStatus(OTransaction.TXSTATUS iStatus)
      Description copied from interface: OTransactionInternal
      Change the status of the transaction.
    • addRecord

      public ORecordOperation addRecord(ORecord iRecord, byte iStatus, String iClusterName)
    • addIndexEntry

      public void addIndexEntry(OIndex delegate, String iIndexName, OTransactionIndexChanges.OPERATION iOperation, Object key, OIdentifiable iValue, boolean clientTrackOnly)
      Description copied from class: OTransactionRealAbstract
      Bufferizes index changes to be flushed at commit time.
      Overrides:
      addIndexEntry in class OTransactionRealAbstract
    • resetChangesTracking

      public void resetChangesTracking()
    • isChanged

      public boolean isChanged()
    • isAlreadyCleared

      public boolean isAlreadyCleared()
    • getLockedRecords

      public Set<ORID> getLockedRecords()
      Specified by:
      getLockedRecords in interface OTransactionInternal
      Overrides:
      getLockedRecords in class OTransactionAbstract
    • setSentToServer

      public void setSentToServer(boolean sentToServer)
    • getSentToServer

      public boolean getSentToServer()
    • fill

      public void fill(Iterator<ORecordOperation> operations)
    • resolveTracking

      protected void resolveTracking(ORecordOperation change)
    • getTxStartCounter

      protected int getTxStartCounter()