risingwavelabs/risingwave · warning · HummockError

Next epoch error: {0}

Error message

Next epoch error: {0}

What it means

A request to advance to or fetch Hummock's next epoch failed, with the reason in the String payload. This is thrown when the epoch-advance/next-epoch path (used by writers and barriers) cannot produce the next epoch. The string carries the underlying reason.

Source

Thrown at src/storage/src/hummock/error.rs:49

    #[error("Invalid block")]
    InvalidBlock,
    #[error("Encode error: {0}")]
    EncodeError(String),
    #[error("Decode error: {0}")]
    DecodeError(String),
    #[error("ObjectStore failed with IO error: {0}")]
    ObjectIoError(
        #[from]
        #[backtrace]
        ObjectError,
    ),
    #[error("Meta error: {0}")]
    MetaError(String),
    #[error("SharedBuffer error: {0}")]
    SharedBufferError(String),
    #[error("Wait epoch error: {0}")]
    WaitEpoch(String),
    #[error("Next epoch error: {0}")]
    NextEpoch(String),
    #[error("Change log retention miss: table {table_id}, epoch {epoch}")]
    ChangeLogRetentionMiss { table_id: TableId, epoch: u64 },
    #[error("Time-travel version expired: table {table_id}, epoch {epoch}")]
    TimeTravelVersionExpired { table_id: TableId, epoch: u64 },
    #[error(
        "Committed epoch mismatch: table {table_id}, committed_epoch {committed_epoch}, read_epoch {read_epoch}"
    )]
    CommittedEpochMismatch {
        table_id: TableId,
        committed_epoch: u64,
        read_epoch: u64,
    },
    #[error("Barrier read is unavailable for now. Likely the cluster is recovering")]
    ReadCurrentEpoch,
    #[error("CompactionExecutor error: {0}")]
    CompactionExecutor(String),
    #[error("FileCache error: {0}")]

View on GitHub (pinned to 6469eb736d)

Solutions

  1. Retry the operation after confirming the meta node is healthy.
  2. Check meta node logs for barrier/epoch-advance failures and network issues.
  3. Restart the affected node/cluster to rebuild epoch state after an abnormal shutdown.
  4. Report with the wrapped message if epoch advancement repeatedly fails.
Defensive patterns

Strategy: retry

Try / catch

// Rust
match hummock_advance_epoch(...) {
    Err(e) if e.to_string().starts_with("Next epoch error") => {
        // retry after meta health check; escalate if persistent
    }
    r => r?,
}

Prevention

When it happens

Trigger: Writer/barrier paths calling Hummock's next-epoch or epoch-advance APIs when the underlying meta/state operation fails.

Common situations: Meta node unavailability or barrier delivery failure; epoch state corruption after crash; network partition preventing epoch propagation.

Understand the failure class

Background: "Invalid state transition" errors: "status must be X, actually Y", "already rejected/charging/uninstalled", "cannot ... while running" — what they mean when a library rejects your call — this error's family across 31 libraries.

Related errors


AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11). Data as JSON: /api/errors/10c63bd51dc59317. Report an issue: GitHub.