Skip to main content

WalError

Enum WalError 

Source
#[non_exhaustive]
pub enum WalError { Io(Error), Corruption { segment: Lsn, offset: u64, detail: &'static str, }, TornMidLog { segment: Lsn, offset: u64, }, RecordTooLarge, InvalidConfig, BadSegmentHeader, Locked, FsyncFailed, ContiguityViolation, Poisoned, }
Expand description

All error conditions surfaced by the WAL.

This is the normative WalError shape from §10. Variants beyond Io carry enough context (segment base LSN, byte offset) to locate the fault.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Io(Error)

An underlying I/O error that is not itself a durability failure.

§

Corruption

A record or header failed CRC / structural validation mid-segment.

Fields

§segment: Lsn

base_lsn of the segment containing the fault.

§offset: u64

Byte offset within the segment where the fault was detected.

§detail: &'static str

Short, static description of what was wrong.

§

TornMidLog

A valid record exists after a bad/torn one — a non-truncatable internal gap. Fatal and loud, never silently truncated (D5).

Fields

§segment: Lsn

base_lsn of the segment containing the fault.

§offset: u64

Byte offset within the segment of the torn record.

§

RecordTooLarge

An append payload exceeds max_record_size (no silent truncation, no fragmentation in v1).

§

InvalidConfig

The supplied WalConfig is invalid (e.g. max_record_size > segment_size - 91, §5.3).

§

BadSegmentHeader

A segment header has bad magic or header_crc (§5.2). The header is written and synced at creation, so it is never a torn tail — always fatal.

§

Locked

The directory’s exclusive writer lock is already held.

§

FsyncFailed

A write/fdatasync/fsync failed. This poisons the handle (§12); there is no safe resume for a dense-LSN log.

§

ContiguityViolation

Retained segments do not form a contiguous LSN suffix (§8.1).

§

Poisoned

The handle was poisoned by a prior durability failure (§12). All subsequent append/commit calls return this.

Trait Implementations§

Source§

impl Debug for WalError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for WalError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for WalError

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<Error> for WalError

Source§

fn from(e: Error) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.