//-----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation.
//
//-----------------------------------------------------------------------
namespace Microsoft.Isam.Esent.Interop.Windows8
{
///
/// The error category. The hierarchy is as follows:
///
/// JET_errcatError
/// |
/// |-- JET_errcatOperation
/// | |-- JET_errcatFatal
/// | |-- JET_errcatIO // bad IO issues, may or may not be transient.
/// | |-- JET_errcatResource
/// | |-- JET_errcatMemory // out of memory (all variants)
/// | |-- JET_errcatQuota
/// | |-- JET_errcatDisk // out of disk space (all variants)
/// |-- JET_errcatData
/// | |-- JET_errcatCorruption
/// | |-- JET_errcatInconsistent // typically caused by user Mishandling
/// | |-- JET_errcatFragmentation
/// |-- JET_errcatApi
/// |-- JET_errcatUsage
/// |-- JET_errcatState
/// |-- JET_errcatObsolete
///
///
public enum JET_ERRCAT
{
///
/// Unknown category.
///
Unknown = 0,
///
/// A generic category.
///
Error,
///
/// Errors that can usually happen any time due to uncontrollable
/// conditions. Frequently temporary, but not always.
///
/// Recovery: Probably retry, or eventually inform the operator.
///
///
Operation,
///
/// This sort error happens only when ESE encounters an error condition
/// so grave, that we can not continue on in a safe (often transactional)
/// way, and rather than corrupt data we throw errors of this category.
///
/// Recovery: Restart the instance or process. If the problem persists
/// inform the operator.
///
///
Fatal,
///
/// O errors come from the OS, and are out of ESE's control, this sort
/// of error is possibly temporary, possibly not.
///
/// Recovery: Retry. If not resolved, ask operator about disk issue.
///
///
IO,
///
/// This is a category that indicates one of many potential out-of-resource
/// conditions.
///
Resource,
///
/// Classic out of memory condition.
///
/// Recovery: Wait a while and retry, free up memory, or quit.
///
///
Memory,
///
/// Certain "specialty" resources are in pools of a certain size, making
/// it easier to detect leaks of these resources.
///
/// Recovery: Bug fix, generally the application should Assert() on these
/// conditions so as to detect these issues during development. However,
/// in retail code, the best to hope for is to treat like Memory.
///
///
Quota,
///
/// Out of disk conditions.
///
/// Recovery: Can retry later in the hope more space is available, or
/// ask the operator to free some disk space.
///
///
Disk,
///
/// A data-related error.
///
Data,
///
/// My hard drive ate my homework. Classic corruption issues, frequently
/// permanent without corrective action.
///
/// Recovery: Restore from backup, perhaps the ese utilities repair
/// operation (which only salvages what data is left / lossy) .Also
/// in the case of recovery(JetInit) perhaps recovery can be performed
/// by allowing data loss.
///
///
Corruption,
///
/// This is similar to Corruption in that the database and/or log files
/// are in a state that is inconsistent and unreconcilable with each
/// other. Often this is caused by application/administrator mishandling.
///
/// Recovery: Restore from backup, perhaps the ese utilities repair
/// operation (which only salvages what data is left / lossy). Also
/// in the case of recovery(JetInit) perhaps recovery can be performed
/// by allowing data loss.
///
///
Inconsistent,
///
/// This is a class of errors where some persisted internal resource ran
/// out.
///
/// Recovery: For database errors, offline defragmentation will rectify
/// the problem, for the log files _first_ recover all attached databases
/// to a clean shutdown, and then delete all the log files and checkpoint.
///
///
Fragmentation,
///
/// A container for and .
///
Api,
///
/// Classic usage error, this means the client code did not pass correct
/// arguments to the JET API. This error will likely not go away with
/// retry.
///
/// Recovery: Generally speaking client code should Assert() this class
/// of errors is not returned, so issues can be caught during development.
/// In retail, the app will probably have little option but to return
/// the issue up to the operator.
///
///
Usage,
///
/// This is the classification for different signals the API could return
/// describe the state of the database, a classic case is JET_errRecordNotFound
/// which can be returned by JetSeek() when the record you asked for
/// was not found.
///
/// Recovery: Not really relevant, depends greatly on the API.
///
///
State,
///
/// The error is recognized as a valid error, but is not expected to be
/// returned by this version of the API.
///
Obsolete,
///
/// The maximum value for the enum. This should not be used.
///
Max,
}
}