{"record":{"id":"aeddffe51796f242","repo":"risingwavelabs/risingwave","slug":"time-travel","errorCode":null,"errorMessage":"time travel","messagePattern":"time travel","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"src/meta/src/hummock/error.rs","lineNumber":54,"sourceCode":"    #[error(transparent)]\n    ObjectStore(\n        #[from]\n        #[backtrace]\n        ObjectError,\n    ),\n    #[error(\"compactor {0} is disconnected\")]\n    CompactorUnreachable(HummockContextId),\n    #[error(\"compaction group error: {0}\")]\n    CompactionGroup(String),\n    #[error(\"SST {0} is invalid\")]\n    InvalidSst(HummockSstableObjectId),\n    #[error(\"invalid manual compaction option: {0}\")]\n    InvalidManualCompactionOption(String),\n    #[error(\"invalid epoch range: {start_epoch}..={end_epoch}\")]\n    InvalidEpochRange { start_epoch: u64, end_epoch: u64 },\n    #[error(\"time-travel version expired: table {table_id}, epoch {epoch}\")]\n    TimeTravelVersionExpired { table_id: TableId, epoch: u64 },\n    #[error(\"time travel\")]\n    TimeTravel(\n        #[source]\n        #[backtrace]\n        anyhow::Error,\n    ),\n    #[error(transparent)]\n    Internal(\n        #[from]\n        #[backtrace]\n        anyhow::Error,\n    ),\n}\n\nimpl Error {\n    pub fn retryable(&self) -> bool {\n        matches!(self, Error::MetaStore(_))\n    }\n}","sourceCodeStart":36,"sourceCodeEnd":72,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/meta/src/hummock/error.rs#L36-L72","documentation":"HummockMetaError::TimeTravel is a generic wrapper (with #[source]/#[backtrace]) around an anyhow::Error produced by time-travel subsystem operations. It carries the underlying cause (backtrace and source chain) for any failure while reading or resolving time-travel versions that is not covered by a more specific variant.","triggerScenarios":"Time-travel APIs that return anyhow::Error internally (lookup of historical versions, interacting with version timeline storage) are converted into this variant via #[from]/map_err.","commonSituations":"Storage backend errors while reading historical version metadata; decode failures of time-travel records; network/object-store issues during a time-travel lookup.","solutions":["Inspect the wrapped source chain and backtrace to find the root cause","Check object store / meta connectivity and health","Retry the operation if the underlying cause was transient","If persistent, capture logs and the backtrace for a bug report"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":"fn is_time_travel_error(err: &HummockMetaError) -> bool {\n    matches!(err, HummockMetaError::TimeTravel(_) | HummockMetaError::TimeTravelVersionExpired { .. })\n}\n","tryCatchPattern":"match res {\n    Err(e @ HummockMetaError::TimeTravel(src)) => {\n        tracing::error!(\"time travel failed: {:#}\", src);\n        // inspect source chain / backtrace for root cause\n    }\n    other => other?,\n}\n","preventionTips":["Always log the full anyhow source chain, not just the wrapper","Monitor object store and meta health for time-travel reads","Retry transient underlying causes with backoff","Keep RisingWave versions consistent across the cluster"],"tags":["rust","hummock","time-travel"],"backgroundTag":"internal-invariant-violation","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"}