{"record":{"id":"10c63bd51dc59317","repo":"risingwavelabs/risingwave","slug":"next-epoch-error-0","errorCode":null,"errorMessage":"Next epoch error: {0}","messagePattern":"Next epoch error: (.+?)","errorType":"exception","errorClass":"HummockError","httpStatus":null,"severity":"warning","filePath":"src/storage/src/hummock/error.rs","lineNumber":49,"sourceCode":"    #[error(\"Invalid block\")]\n    InvalidBlock,\n    #[error(\"Encode error: {0}\")]\n    EncodeError(String),\n    #[error(\"Decode error: {0}\")]\n    DecodeError(String),\n    #[error(\"ObjectStore failed with IO error: {0}\")]\n    ObjectIoError(\n        #[from]\n        #[backtrace]\n        ObjectError,\n    ),\n    #[error(\"Meta error: {0}\")]\n    MetaError(String),\n    #[error(\"SharedBuffer error: {0}\")]\n    SharedBufferError(String),\n    #[error(\"Wait epoch error: {0}\")]\n    WaitEpoch(String),\n    #[error(\"Next epoch error: {0}\")]\n    NextEpoch(String),\n    #[error(\"Change log retention miss: table {table_id}, epoch {epoch}\")]\n    ChangeLogRetentionMiss { table_id: TableId, epoch: u64 },\n    #[error(\"Time-travel version expired: table {table_id}, epoch {epoch}\")]\n    TimeTravelVersionExpired { table_id: TableId, epoch: u64 },\n    #[error(\n        \"Committed epoch mismatch: table {table_id}, committed_epoch {committed_epoch}, read_epoch {read_epoch}\"\n    )]\n    CommittedEpochMismatch {\n        table_id: TableId,\n        committed_epoch: u64,\n        read_epoch: u64,\n    },\n    #[error(\"Barrier read is unavailable for now. Likely the cluster is recovering\")]\n    ReadCurrentEpoch,\n    #[error(\"CompactionExecutor error: {0}\")]\n    CompactionExecutor(String),\n    #[error(\"FileCache error: {0}\")]","sourceCodeStart":31,"sourceCodeEnd":67,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/storage/src/hummock/error.rs#L31-L67","documentation":"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.","triggerScenarios":"Writer/barrier paths calling Hummock's next-epoch or epoch-advance APIs when the underlying meta/state operation fails.","commonSituations":"Meta node unavailability or barrier delivery failure; epoch state corruption after crash; network partition preventing epoch propagation.","solutions":["Retry the operation after confirming the meta node is healthy.","Check meta node logs for barrier/epoch-advance failures and network issues.","Restart the affected node/cluster to rebuild epoch state after an abnormal shutdown.","Report with the wrapped message if epoch advancement repeatedly fails."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"// Rust\nmatch hummock_advance_epoch(...) {\n    Err(e) if e.to_string().starts_with(\"Next epoch error\") => {\n        // retry after meta health check; escalate if persistent\n    }\n    r => r?,\n}","preventionTips":["Ensure meta node availability and replica count.","Use clean shutdowns; investigate crash recovery logs.","Monitor barrier delivery latency across the cluster."],"tags":["storage","hummock","epoch","concurrency"],"backgroundTag":"invalid-state-transition","analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}