{"record":{"id":"43045fc9c6b05677","repo":"risingwavelabs/risingwave","slug":"since-timestamp-is-too-new-for-upstream-table","errorCode":null,"errorMessage":"since_timestamp is too new for upstream table {}: requested epoch {}, resolved snapshot epoch {}, latest changelog epoch {}","messagePattern":"since_timestamp is too new for upstream table (.+?): requested epoch (.+?), resolved snapshot epoch (.+?), latest changelog epoch (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/meta/src/barrier/context/context_impl.rs","lineNumber":132,"sourceCode":"        Ok(index) => index,\n        Err(index) => index,\n    };\n    let snapshot_epoch = change_log\n        .get(snapshot_epoch_index)\n        .ok_or_else(|| {\n            anyhow::anyhow!(\n                \"since_timestamp is later than the latest changelog of upstream table {}: requested epoch {}, latest changelog epoch {}\",\n                table_id,\n                since_epoch,\n                upstream_committed_epoch,\n            )\n        })?\n        .checkpoint_epoch;\n    // A request inside the latest changelog entry may be smaller than\n    // `upstream_committed_epoch`, but still resolve to the latest checkpoint.\n    // That end-of-log case is not a usable historical snapshot epoch.\n    if snapshot_epoch >= upstream_committed_epoch {\n        return Err(anyhow::anyhow!(\n            \"since_timestamp is too new for upstream table {}: requested epoch {}, resolved snapshot epoch {}, latest changelog epoch {}\",\n            table_id,\n            since_epoch,\n            snapshot_epoch,\n            upstream_committed_epoch,\n        )\n        .into());\n    }\n    let epochs = change_log\n        .range((snapshot_epoch_index + 1)..)\n        .map(|epoch_log| {\n            (\n                epoch_log.non_checkpoint_epochs.clone(),\n                epoch_log.checkpoint_epoch,\n            )\n        })\n        .collect::<Vec<_>>();\n","sourceCodeStart":114,"sourceCodeEnd":150,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/meta/src/barrier/context/context_impl.rs#L114-L150","documentation":"Although a changelog entry was found, its checkpoint epoch is >= the upstream committed epoch, meaning the resolution landed on the newest checkpoint (end-of-log). Such a snapshot epoch is not a usable historical snapshot for since-timestamp backfill, so it is rejected.","triggerScenarios":"resolve_since_timestamp_log_store_epoch when binary search resolves to the latest entry whose checkpoint_epoch >= upstream_committed_epoch — the requested time falls within the newest changelog interval.","commonSituations":"since_timestamp set too close to 'now' so it maps onto the latest checkpoint; upstream table caught up fully before the backfill was created.","solutions":["Supply an earlier since_timestamp that resolves to an older checkpoint","Retry creating the backfill shortly after upstream commits new data","Use a plain snapshot backfill without since_timestamp if the latest state is acceptable"],"exampleFix":"-- before\nSINCE_TIMESTAMP = now();\n-- after\nSINCE_TIMESTAMP = now() - interval '5 minutes';","handlingStrategy":"validation","validationCode":"if resolved_snapshot_epoch >= upstream_committed_epoch {\n    return Err(\"since_timestamp resolves to the latest checkpoint; choose an earlier time\");\n}","typeGuard":"fn is_historical_snapshot(snap: u64, committed: u64) -> bool { snap < committed }","tryCatchPattern":"match create_snapshot_backfill(...).await {\n    Err(e) if e.contains(\"too new for upstream table\") => use_earlier_since_timestamp(),\n    other => other,\n}","preventionTips":["Choose since_timestamps with margin before 'now'","Confirm a historical checkpoint exists before requesting since-timestamp backfill","Fall back to plain snapshot backfill if latest state suffices"],"tags":["meta","barrier","since-timestamp","validation"],"backgroundTag":"argument-out-of-range","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"}