Class NGTransaction

  • All Implemented Interfaces:
    NGTransactionMBean, Transaction, TransactionMBean

    public final class NGTransaction
    extends AbstractTransaction
    implements NGTransactionMBean
    The NGTransaction class implements a transactional storage. For efficiency it uses multiples files for its transaction journal, the final storage is provided through the Repository interface on filesystem or database.

    Be Careful, the configuration properties don't work for the transaction component: these properties are saved in the transaction repository so they can not be used to configure it.

    See Also:
    Transaction, Repository
    • Field Detail

      • LogMemoryCapacity

        static int LogMemoryCapacity
        Global in memory log initial capacity, by default 4096. This value can be adjusted for a particular server by setting Transaction.LogMemoryCapacity specific property.

        This property can be set only at first launching.

      • MaxLogFileSize

        static int MaxLogFileSize
        Maximum size of disk log in Mb, by default 16Mb. This value can be adjusted (Mb) for a particular server by setting Transaction.MaxLogFileSize specific property.

        This property can be set only at first launching.

      • nbLogFile

        static int nbLogFile
        Maximum number of disk log used by the Transaction component, by default 4. This value can be adjusted for a particular server by setting Transaction.NbLogFile specific property.

        This property can be set only at first launching.

      • minObjInLog

        static int minObjInLog
        Minimum number of 'live' objects in a disk log before a garbage, by default 64. This value can be adjusted for a particular server by setting Transaction.minObjInLog specific property.

        This property can be set only at first launching.

      • syncOnWrite

        boolean syncOnWrite
        If true every write in the log file is synced to disk, by default false. This value can be adjusted for a particular server by setting Transaction.SyncOnWrite specific property.

        This property can be set only at first launching.

      • LogThresholdOperation

        int LogThresholdOperation
        Number of pooled operation, by default 1000. This value can be adjusted for a particular server by setting Transaction.LogThresholdOperation specific property.

        This property can be set only at first launching.

      • repositoryImpl

        String repositoryImpl
        The Repository classname implementation. This value can be set for a particular server by setting the Transaction.RepositoryImpl specific property. By default its value is "fr.dyade.aaa.util.FileRepository".

        This property can be set only at first launching.

    • Constructor Detail

      • NGTransaction

        public NGTransaction()
    • Method Detail

      • getLogMemoryCapacity

        public final int getLogMemoryCapacity()
        Returns the initial capacity of global in memory log (by default 4096).
        Specified by:
        getLogMemoryCapacity in interface NGTransactionMBean
        Returns:
        The initial capacity of global in memory log.
      • getLogMemorySize

        public int getLogMemorySize()
        Returns the number of operation in the memory log.
        Specified by:
        getLogMemorySize in interface NGTransactionMBean
        Returns:
        The number of operation in the memory log.
      • getMaxLogFileSize

        public final int getMaxLogFileSize()
        Returns the maximum size of disk log in Mb, by default 16Mb.
        Specified by:
        getMaxLogFileSize in interface NGTransactionMBean
        Returns:
        The maximum size of disk log in Mb.
      • setMaxLogFileSize

        public final void setMaxLogFileSize​(int size)
        Sets the maximum size of disk log in Mb.
        Specified by:
        setMaxLogFileSize in interface NGTransactionMBean
        Parameters:
        size - The maximum size of disk log in Mb.
      • getLogFileSize

        public final int getLogFileSize()
        Returns the current size of disk log in Kb.
        Specified by:
        getLogFileSize in interface NGTransactionMBean
        Returns:
        The size of disk log in Kb.
      • getNbLogFiles

        public final int getNbLogFiles()
        Returns the number of rolled log files.
        Specified by:
        getNbLogFiles in interface NGTransactionMBean
        Returns:
        The number of rolled log files.
      • isSyncOnWrite

        public boolean isSyncOnWrite()
        Description copied from interface: NGTransactionMBean
        Returns true if every write in the log file is synced to disk.
        Specified by:
        isSyncOnWrite in interface NGTransactionMBean
        Returns:
        the syncOnWrite value.
      • getLogThresholdOperation

        public final int getLogThresholdOperation()
        Returns the pool size for operation objects, by default 1000.
        Specified by:
        getLogThresholdOperation in interface NGTransactionMBean
        Returns:
        The pool size for operation objects.
      • getGarbageCount

        public final int getGarbageCount()
        Returns the number of garbage operation since starting up.
        Specified by:
        getGarbageCount in interface NGTransactionMBean
        Returns:
        The number of garbage operation.
      • getGarbageTime

        public long getGarbageTime()
        Returns the cumulated time of garbage operations since starting up.
        Specified by:
        getGarbageTime in interface NGTransactionMBean
        Returns:
        The cumulated time of garbage operations since starting up.
      • getNbLoadedFromLog

        public int getNbLoadedFromLog()
        Returns the number of load operation from a log file since last start.
        Specified by:
        getNbLoadedFromLog in interface NGTransactionMBean
        Returns:
        The number of load operation from a log file.
      • getGarbageRatio

        public int getGarbageRatio()
        Returns the ratio of garbage operations since starting up.
        Specified by:
        getGarbageRatio in interface NGTransactionMBean
        Returns:
        The ratio of garbage operations since starting up.
      • resetGarbageRatio

        public void resetGarbageRatio()
      • getRepositoryImpl

        public String getRepositoryImpl()
        Returns the Repository classname implementation.
        Specified by:
        getRepositoryImpl in interface NGTransactionMBean
        Returns:
        The Repository classname implementation.
      • getNbSavedObjects

        public int getNbSavedObjects()
        Returns the number of save operation to repository.
        Specified by:
        getNbSavedObjects in interface NGTransactionMBean
        Returns:
        The number of save operation to repository.
      • getNbDeletedObjects

        public int getNbDeletedObjects()
        Returns the number of delete operation on repository.
        Specified by:
        getNbDeletedObjects in interface NGTransactionMBean
        Returns:
        The number of delete operation on repository.
      • getNbBadDeletedObjects

        public int getNbBadDeletedObjects()
        Returns the number of useless delete operation on repository.
        Specified by:
        getNbBadDeletedObjects in interface NGTransactionMBean
        Returns:
        The number of useless delete operation on repository.
      • getNbLoadedObjects

        public int getNbLoadedObjects()
        Returns the number of load operation from repository.
        Specified by:
        getNbLoadedObjects in interface NGTransactionMBean
        Returns:
        The number of load operation from repository.
      • getPersistenceDir

        public String getPersistenceDir()
        Returns the path of persistence directory.
        Returns:
        The path of persistence directory.
      • setPhase

        protected final void setPhase​(int newPhase)
        Description copied from class: AbstractTransaction
        Changes the transaction state.
        Specified by:
        setPhase in class AbstractTransaction
        Parameters:
        newPhase - the new transaction state.
      • getList

        public String[] getList​(String prefix)
        Returns an array of strings naming the persistent objects denoted by a name that satisfy the specified prefix. Each string is an object name.
        Specified by:
        getList in interface Transaction
        Parameters:
        prefix - the prefix
        Returns:
        An array of strings naming the persistent objects denoted by a name that satisfy the specified prefix. The array will be empty if no names match.
      • saveInLog

        protected final void saveInLog​(byte[] buf,
                                       String dirName,
                                       String name,
                                       Hashtable log,
                                       boolean copy,
                                       boolean first)
                                throws IOException
        Save an object state already serialized. The byte array in parameter may be modified so we must duplicate it.
        Specified by:
        saveInLog in class AbstractTransaction
        Parameters:
        buf - the byte array containing the state of the object.
        dirName - the directory name of the object.
        name - the name of the object.
        log - the log to use.
        copy - the byte array can be modified, copy it.
        first - the object is a new one.
        Throws:
        IOException - an error occurs.
      • loadByteArray

        public byte[] loadByteArray​(String dirName,
                                    String name)
                             throws IOException
        Description copied from interface: Transaction
        Load the specified byte array.
        Specified by:
        loadByteArray in interface Transaction
        Parameters:
        dirName - the directory name of the object.
        name - the name of the object.
        Returns:
        the loaded byte array.
        Throws:
        IOException - an error occurs.
      • delete

        public final void delete​(String dirName,
                                 String name)
        Description copied from interface: Transaction
        Deletes the specified object.
        Specified by:
        delete in interface Transaction
        Parameters:
        dirName - the directory name of the object.
        name - the name of the object.
      • commit

        public final void commit​(boolean release)
                          throws IOException
        Description copied from interface: Transaction
        Commit the current transaction.
        Specified by:
        commit in interface Transaction
        Parameters:
        release - if true releases the transaction at the end of the commit.
        Throws:
        IOException - an error occurs.
      • deleteDirectory

        boolean deleteDirectory​(File directoryToBeDeleted)
      • backup

        public String backup​(String path)
                      throws Exception
        Backups the content of Transaction module. Produces a generic Backup/Restore file containing all living objects.
        Specified by:
        backup in interface Transaction
        Specified by:
        backup in interface TransactionMBean
        Parameters:
        path - Directory path to store the backup.
        Returns:
        the name of created backup file.
        Throws:
        Exception - An error occurs during backup.
      • backupPhase1

        public void backupPhase1​(File backupDir,
                                 BackupFile backupFile)
                          throws IOException
        First phase of the backup: - Get all objects in repository. - Copy all log files. Need to be synchronized to avoid any transaction operation.
        Throws:
        IOException
      • backupPhase2

        public void backupPhase2​(File backupDir,
                                 RestoreFile restoreFile,
                                 BackupFile backupFile)
                          throws IOException
        Second phase of the backup, compacts all logs in one then produces a unique backup file. No need to be synchronized, should be no access on handled data.
        Parameters:
        backupDir -
        restoreFile -
        backupFile -
        Throws:
        IOException
      • stop

        public void stop()
        Stops the transaction module. It waits all transactions termination, then the module is kept in a FREE 'ready to use' state. The log file is garbaged, all operations are reported to disk.
        Specified by:
        stop in interface Transaction
      • close

        public void close()
        Close the transaction module. It waits all transactions termination, the module will be initialized anew before reusing it. The log file is garbaged then closed.
        Specified by:
        close in interface Transaction
      • toString

        public String toString()
        Returns a string representation for this object.
        Overrides:
        toString in class Object
        Returns:
        A string representation of this object.