risingwavelabs/risingwave · error · HummockError

Meta error

Error message

Meta error: {0}

What it means

A Hummock metadata operation failed and its error text is carried in the String payload. This covers meta-cell (version/manifest) read or decode failures inside storage code paths. It is thrown whenever meta-layer logic reports a failure without a dedicated variant.

Solutions

  1. Inspect the wrapped message to identify the failing meta operation.
  2. Verify manifest/version metadata integrity in the object store; restore from backup if corrupt.
  3. Ensure all nodes use a compatible RisingWave version for metadata formats.
  4. Restart the cluster to rebuild in-memory meta state, then re-check.
Defensive patterns

Strategy: try-catch

Try / catch

// Rust
match hummock_op() {
    Err(e) if e.to_string().starts_with("Meta error") => {
        // inspect wrapped message; verify manifest integrity before retry
    }
    r => r?,
}

Prevention

When it happens

Trigger: Reading/decoding hummock version deltas or manifest metadata cells where the meta layer returns an error string.

Common situations: Corrupt manifest/version data in object store; incompatible metadata format across versions; lost meta writes after an object store outage.

Understand the failure class

Background: Database query failed: Internal Server Error 500s wrapping SQL, Prisma, and connection failures — what to check first — this error's family across 16 libraries.

Related errors


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

Appendix: source

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

    #[error("Magic number mismatch: expected {expected}, found: {found}")]
    MagicMismatch { expected: u32, found: u32 },
    #[error("Invalid format version: {0}")]
    InvalidFormatVersion(u32),
    #[error("Checksum mismatch: expected {expected}, found: {found}")]
    ChecksumMismatch { expected: u64, found: u64 },
    #[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,

View on GitHub (pinned to 6469eb736d)