borland Packages Class Hierarchy datastore Package
java.lang.Object +----java.lang.Throwable +----java.lang.Exception +----com.borland.dx.dataset.DataSetException +----com.borland.datastore.TxException
Variables Properties Methods
Implements ChainedException, Serializable
TxException enumerates transaction-specific DataStore exceptions.
The BASE value for the class variables is 6000.
public static final int AMBIGUOUS_LOGDIR = BASE+5Log directory setting persisted in the DataStore is not the same as the setting in the TxManager, and the directory specified by the DataStore still contains log files.
If the log files were copied to the new directory specified by the TxManager, the log files in the old location (persisted in the DataStore file) must be renamed or deleted.
public static final int ANCHOR_TOO_OLD = BASE+9Anchor timestamp is older then timestamp of DataStore file. This is probably because the log files are out of date with the DataStore file.
public static final int BIRTHSTAMP_MISMATCH = BASE+8Birthstamp for "A" anchor file and "B" anchor file do not match. This probably means that the log files were not created for the same DataStore file.
public static final int INVALID_ANCHOR_FILE = BASE+7Anchor file could not be read or has an invalid contents. It is probably corrupt, but this should be a rare error since the precious anchor is copied to at least two separate files. The system redundantly copies this anchor inside the DataStore file itself, so this could be a recoverable failure. Log duplexing is another way to recover from such a failure. If the log is being duplexed (by setting the TxManager.BLogDir property), the "A" and "B" anchors will be examined and the newest, valid anchor will be used.
public static final int INVALID_ANCHOR_LENGTH = BASE+6Anchor file has an invalid length. It is probably corrupt, but this should be a rare error since the precious anchor is copied to at least two separate files. The system redundantly copies this anchor inside the DataStore file itself, so this could be a recoverable failure. Log duplexing is another way to recover from such a failure. If the log is being duplexed (by setting the TxManager.BLogDir property), the "A" and "B" anchors will be examined and the newest, valid anchor will be used.
public static final int INVALID_LSN = BASE+15Unexpected internal condition. Invalid address into a log file.
This is an unexpected internal error symptomatic of a corrupted log file. It is recommended that you use the DataStore Explorer or the DataStoreConnection.copyStreams method to save all other streams to a new DataStore. See the section on verifying and repairing DataStores in the documentation for the DataStore component.
public static final int INVALID_USER_NAME = BASE+11Invalid user name for DataStoreConnection.userName property. Typically caused when the property has never been set.
public static final int LOCK_TIMEOUT = BASE+24Timeout waiting for lock. This can be caused by a deadlock scenario or because a connection with a lock is taking a long time to commit its transaction.
public static final int LOG_EXISTS = BASE+0Existing log files and/or Log anchor file found in the directory where the system is attempting to create new log files.
public static final int LOGDIR_MISMATCH = BASE+4"A" and "B" log directories specified for DataStore, but one of them does not exist. The log files must both exist or both not exist. This ensures that the duplexed logs are in sync.
public static final int MISSING_CHECKPOINT_FILE = BASE+17Cannot open the DataStore. Missing the log file with the most recent checkpoint.
public static final int MISSING_LOG_FILE = BASE+16Missing log file.
public static final int NEED_A_LOGDIR = BASE+3"B" log directory specified without specifying "A" log directory. The "A" log directory must be specified. "B" log directory is an optional duplexing of the log files.
public static final int NOT_TRANSACTIONAL = BASE+14Attempted transactional operation on DataStore when its txManager property is null.
public static final int OLD_LOG = BASE+25The log file appears to be older than than the DataStore it is associated with. This may be caused by copying old log files to the directory of a DataStore database file that has more recent changes.
To set up new log files, you can open the DataStore in read-only mode and copy its contents. To open the DataStore in read-only mode, use DataStoreConnection.setReadOnly(). To copy its contents, use DataStoreConnection.copyStreams().
public static final int RECOVERY_DENIED = BASE+22Recovery denied by ResponseListener event handler. To prevent this exception and allow recovery to complete, do not deny this event in your application's ResponseListener handler.
public static final int ROW_LOCK_TIMEOUT = BASE+26Timeout waiting for row lock. This can be caused by a deadlock scenario or because a connection with a lock is taking a long time to commit the transaction that has acquired a lock.
public static final int TOO_MANY_OPEN_FILES = BASE+10Too many files opened simultaneously by the log manager. This should not happen. If this does happen, shutdown and restart the system.
public static final int TX_MANAGER_INUSE = BASE+18Attempt to use a TxManager() component instance for two different DataStores.
public static final int TX_NOT_ALLOWED = BASE+21Cannot make this DataStore transactional because it is an older file format.
public static final int TX_REQUIRED = BASE+20This connection cannot be opened because the DataStore is neither transactional nor read-only. This error can be corrected by setting the DataStore.readOnly property to true or by setting the DataStore.txManager property to an instance of TxManager. The DataStore JDBC driver can only open connections to transactional or read-only DataStores.
Once a DataStore component is opened with the txManager property set, the DataStore file is marked transactional and all TxManager properties are persisted in the DataStore file. So this operation only needs to be performed once.