borland Packages Class Hierarchy datastore Package
java.lang.Object +----java.lang.Throwable +----java.lang.Exception +----java.lang.RuntimeException +----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 DEADLOCK = BASE+28Prepared XA transaction needs to be commited or rolled back
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.
DataStoreConnection.lockWaitTime
property
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.
ResponseEvent.DATASTORE_RECOVERING
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.
DataStoreConnection.lockWaitTime
property
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.
public static final int XA_ACTIVE = BASE+27Prepared XA transaction needs to be commited or rolled back