/// <inheritdoc /> public unsafe void CommitLogIncrementalCheckpoint(Guid logToken, int version, byte[] commitMetadata, DeltaLog deltaLog) { deltaLog.Allocate(out int length, out long physicalAddress); if (length < commitMetadata.Length) { deltaLog.Seal(0, DeltaLogEntryType.CHECKPOINT_METADATA); deltaLog.Allocate(out length, out physicalAddress); if (length < commitMetadata.Length) { deltaLog.Seal(0); throw new Exception($"Metadata of size {commitMetadata.Length} does not fit in delta log space of size {length}"); } } fixed(byte *ptr = commitMetadata) { Buffer.MemoryCopy(ptr, (void *)physicalAddress, commitMetadata.Length, commitMetadata.Length); } deltaLog.Seal(commitMetadata.Length, DeltaLogEntryType.CHECKPOINT_METADATA); deltaLog.FlushAsync().Wait(); }