microsoft/FASTER · error
Unexpected checkpoint status
Error message
Unexpected checkpoint status [%s] for COLD store [expected: %s]
What it means
At the start of the cold-store checkpoint step, cold_store_status must be REQUESTED (set when the checkpoint was initiated). Any other value means the checkpoint state machine is inconsistent — e.g., this checkpoint context was already consumed or was never properly requested.
Solutions
- Only invoke the cold-store checkpoint step once per Checkpoint() round, after hot-store finishes
- Do not call internal per-store checkpoint methods directly; use the top-level Checkpoint() API
- Verify phase is COLD_STORE_CHECKPOINT before the call (the assert fires otherwise)
- Reset instance state after a FAILED checkpoint before retrying
Example fix
// before f2->CheckpointColdStore(ctx); // called twice per round f2->CheckpointColdStore(ctx); // second call: status no longer REQUESTED // after f2->CheckpointColdStore(ctx); // once, per Checkpoint() invocation only
Defensive patterns
Strategy: validation
Validate before calling
if (!inside_checkpoint_round || cold_step_already_ran) { return Status::Aborted; } Prevention
- Use only the public Checkpoint() API, not internal per-store steps
- Run each checkpoint step once per round
- Reset state after FAILED checkpoints
When it happens
Trigger: The cold-store checkpoint entry point (CheckpointColdStore-like API) invoked when cold_store_status is IDLE/ACTIVE/FINISHED — e.g., double invocation of the cold checkpoint, or invocation outside a COLD_STORE_CHECKPOINT phase (also asserted).
Common situations: Manually driving checkpoint stages out of order; calling the cold-store checkpoint step twice within one checkpoint round; a previous FAILED checkpoint leaving stale status.
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
- Unexpected checkpoint status for COLD store
- Invalid Enum Argument
- Unexpected checkpoint phase
- Unexpected checkpoint phase
- Unexpected checkpoint phase during recovery
AI-assisted analysis of microsoft/FASTER@321d872eab (2026-09-15).
Data as JSON: /api/errors/31b9e91a900b1ca1.
Report an issue: GitHub.
Appendix: source
Thrown at cc/src/core/f2.h:759
bool shift_begin_address, int n_threads, bool checkpoint) {
const bool is_hot_store = (store_type == StoreType::HOT);
uint64_t tail_address = store.hlog.GetTailAddress().control();
log_debug("Compact %s: {%.2lf GB} {Goal %.2lf GB} [%lu %lu] -> [%lu %lu]",
is_hot_store ? "HOT" : "COLD",
static_cast<double>(store.Size()) / (1 << 30),
static_cast<double>(tail_address - until_address) / (1 << 30),
store.hlog.begin_address.control(), tail_address,
until_address, tail_address);
if (until_address > store.hlog.safe_read_only_address.control()) {
throw std::invalid_argument{ "Can only compact until safe read-only region" };
}
StoreCheckpointStatus status;
if (checkpoint) {
assert(checkpoint_.phase.load() == CheckpointPhase::COLD_STORE_CHECKPOINT);
if ((status = checkpoint_.cold_store_status.load()) != StoreCheckpointStatus::REQUESTED) {
log_error("Unexpected checkpoint status [%s] for COLD store [expected: %s]",
STORE_CHECKPOINT_STATUS_STR[static_cast<int>(status)],
STORE_CHECKPOINT_STATUS_STR[static_cast<int>(StoreCheckpointStatus::REQUESTED)]);
assert(false);
}
checkpoint_.cold_store_status.store(StoreCheckpointStatus::ACTIVE);
}
Guid token = checkpoint ? checkpoint_.token : Guid::Create();
bool success = store.InternalCompactWithLookup(until_address, shift_begin_address,
n_threads, is_hot_store, checkpoint, token);
log_debug("Compact %s [success=%d]: {Goal %.2lf} {Actual %.2lf GB} Done!",
is_hot_store ? "HOT": "COLD", success,
static_cast<double>(tail_address - until_address) / (1 << 30),
static_cast<double>(store.Size()) / (1 << 30));
if (checkpoint) {
assert(checkpoint_.phase.load() == CheckpointPhase::COLD_STORE_CHECKPOINT);
if ((status = checkpoint_.cold_store_status.load()) != StoreCheckpointStatus::ACTIVE) {
log_error("Unexpected checkpoint status [%s] for COLD store [expected: %s]",View on GitHub (pinned to 321d872eab)