microsoft/FASTER · error · FasterException
Invalid log commit metadata for ID
Error message
Invalid log commit metadata for ID
What it means
LogCheckpointInfo.Recover fetches the log checkpoint metadata for the given token via checkpointManager.GetLogCheckpointMetadata and throws FasterException("Invalid log commit metadata for ID " + token) when the manager returns null. No metadata exists for that token, so recovery cannot proceed.
Solutions
- Verify the token exists: list available checkpoints on the ICheckpointManager and recover with one of those tokens.
- Point recovery at the same checkpoint manager backend (path/container) used at checkpoint time.
- Check that the checkpoint actually completed (WaitForCommitComplete) before trying to recover from it.
- If the delta-scan path returns null, recover from the latest full checkpoint metadata instead (scanDelta=false).
Example fix
// before fasterLog.Recover(unknownToken); // FasterException: Invalid log commit metadata for ID ... // after var tokens = manager.GetCheckpointTokens(); // e.g. available committed checkpoints var valid = tokens.Contains(token) ? token : tokens.Max(); fasterLog.Recover(valid);
Defensive patterns
Strategy: validation
Validate before calling
// confirm the token exists on the manager before recovering
var tokens = checkpointManager.GetCheckpointTokens();
if (!tokens.Contains(token)) throw new InvalidOperationException($"Unknown checkpoint token {token}; available: {string.Join(",", tokens)}"); Try / catch
try { fasterLog.Recover(token); } catch (FasterException ex) when (ex.Message.StartsWith("Invalid log commit metadata for ID")) { fasterLog.Recover(latestCommittedToken); } Prevention
- Always WaitForCommitComplete before recording a token as recoverable.
- Use the same checkpoint-manager backend and path for write and recovery.
- Disable/lengthen checkpoint pruning if tokens may be recovered later.
When it happens
Trigger: Calling fasterLog.Recover(token) (or Recover with a checkpoint manager) where GetLogCheckpointMetadata(token, deltaLog, scanDelta, recoverTo) returns null — the token has no committed metadata on the checkpoint manager.
Common situations: Recovering with a token from a checkpoint that never fully committed; using the wrong ICheckpointManager/storage backend than the one that wrote the checkpoint; token typo or checkpoint garbage-collected (CheckpointManager pruning old checkpoints); scanning deltas that were never flushed.
Understand the failure class
Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.
Related errors
- Unable to set first valid segment to
- Unable to set last valid segment to
- Already recovered until address
- This method can only be used with a read-only FasterLog…
- Uninitialized page found during scan at page
AI-assisted analysis of microsoft/FASTER@321d872eab (2026-09-15).
Data as JSON: /api/errors/712bb418da8874b3.
Report an issue: GitHub.
Appendix: source
Thrown at cs/src/core/Index/Common/Contexts.cs:560
throw new FasterException("Invalid checksum for checkpoint");
}
/// <summary>
/// Recover info from token
/// </summary>
/// <param name="token"></param>
/// <param name="checkpointManager"></param>
/// <param name="deltaLog"></param>
/// <param name = "scanDelta">
/// whether to scan the delta log to obtain the latest info contained in an incremental snapshot checkpoint.
/// If false, this will recover the base snapshot info but avoid potentially expensive scans.
/// </param>
/// <param name="recoverTo"> specific version to recover to, if using delta log</param>
internal void Recover(Guid token, ICheckpointManager checkpointManager, DeltaLog deltaLog = null, bool scanDelta = false, long recoverTo = -1)
{
var metadata = checkpointManager.GetLogCheckpointMetadata(token, deltaLog, scanDelta, recoverTo);
if (metadata == null)
throw new FasterException("Invalid log commit metadata for ID " + token.ToString());
using StreamReader s = new(new MemoryStream(metadata));
Initialize(s);
}
/// <summary>
/// Recover info from token
/// </summary>
/// <param name="token"></param>
/// <param name="checkpointManager"></param>
/// <param name="deltaLog"></param>
/// <param name="commitCookie"> Any user-specified commit cookie written as part of the checkpoint </param>
/// <param name = "scanDelta">
/// whether to scan the delta log to obtain the latest info contained in an incremental snapshot checkpoint.
/// If false, this will recover the base snapshot info but avoid potentially expensive scans.
/// </param>
/// <param name="recoverTo"> specific version to recover to, if using delta log</param>
internal void Recover(Guid token, ICheckpointManager checkpointManager, out byte[] commitCookie, DeltaLog deltaLog = null, bool scanDelta = false, long recoverTo = -1)View on GitHub (pinned to 321d872eab)