Group flat page snapshots into authenticated macro objects - #40
Closed
FujitsuPolycom wants to merge 4 commits into
Closed
Group flat page snapshots into authenticated macro objects#40FujitsuPolycom wants to merge 4 commits into
FujitsuPolycom wants to merge 4 commits into
Conversation
Owner
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resulting behavior
block_pages_v1snapshots assparkcache-page-snapshot-manifest/v2roots over content-addressed objects of at most 64 MiB.sparkcache.spark_context_cache_cuda_hybrid_restoremodule andCudaHybridRestore*/execute_cuda_hybrid_*API.spark_context_cache_native_hybrid_restoreandNativeHybridRestoreErrorremain compatibility aliases.logical_chunk_tokens=256geometry independent of physical object grouping..spccpayload per logical chunk. An 813,068,464-byte flat snapshot is represented by 13 payload objects instead of 512 logical-chunk files.Authenticated abort behavior
A missing, truncated, replaced, or checksum-mismatched object becomes recomputation. If object corruption is detected after earlier slabs were submitted, the parked placement transaction aborts and cannot resume. A root whose objects each authenticate but whose declared complete-snapshot digest is wrong also aborts before completion. A forged in-memory lookup whose manifest digest does not match the persisted root is rejected before placement begins.
Compatibility and cache namespace
Version 1 flat manifests remain readable byte-for-byte. Row-oriented
per_token_rowspublication is unchanged.This change does not alter
CacheIdentitywire values, digest salts, 256-token logical geometry, the default flat namespace, or the opt-inpage-tail-cow-v1namespace. The physical representation changes under a strict manifest schema. Readers withoutsparkcache-page-snapshot-manifest/v2support cannot reinterpret v2 objects as v1 chunks; they reject the root as a cache miss. A mixed-version rollback can therefore lose reuse and recompute, but cannot serve the entry under the wrong storage contract.Evidence and qualification boundary
Implementation base: SparkCache runtime commit
65b6642df1afc64366430d3aef9aca01f5c5e1c3.Source commit:
229d7d6158261e9510ab99d7e82d532abb9ade01SparkCache source-tree SHA-256:
3f0d9b0aca8fb5cbb82dae3aa9daa2ed384e9edbced854930c0099e3d169f4bfGPU-free validation:
python -m pytest sparkcache -q: 773 passed, 7 skippedpython -m pytest deploy -q: 108 passed, 1 skippedpython -m ruff check sparkcache deploy: passedgit diff --check: passedFlat macro publication and its SparkCache CUDA restore path are implemented and GPU-free tested, not live qualified. This PR does not build or deploy an image, alter the active service, or claim a measured latency improvement.
Historical review note
This draft is stacked on SparkCache pull request #39 for review.