Repository navigation
fix(images): disable DoSvc so sparse DO*.tmp files can't break layer commits - #192
Merged
Merged
Conversation
…commits Third MSVC-image build failure, third distinct cause — this one below the Dockerfile's own steps: the verification RUN (read-only!) failed at snapshot COMMIT with failed to reimport snapshot: Files/Windows/Temp/DO32B1.tmp: unknown stream ID 9 Delivery Optimization runs inside Server Core containers and writes sparse temp files on its own schedule; the Windows layer archiver cannot serialize sparse backup streams (stream 9 = BACKUP_SPARSE_BLOCK), so whichever RUN is live when DoSvc writes loses its layer commit, nondeterministically. Disable the service in a first layer (registry state protects every later step) and sweep any DO*.tmp already present. Costs a VS-install cache rebuild (the new layer invalidates it) — one-time ~25 min.
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.
Third MSVC-image build failure, third distinct cause — and this one is below the Dockerfile's own steps. With #191's quoting fix in, the failure moved to the snapshot commit of the verification step (a read-only RUN):
DO*.tmpinWindows\Tempis the Delivery Optimization service (DoSvc), which runs inside Server Core containers and writes sparse temp files on its own schedule. The Windows layer archiver (go-winio backuptar) can't serialize sparse backup streams — stream ID 9 isBACKUP_SPARSE_BLOCK— so whichever RUN happens to be live when DoSvc writes loses its layer commit. Nondeterministic by nature: earlier runs committed the same steps fine.Fix: a first RUN (right after
SHELL) that stops DoSvc, sets it Disabled, and sweeps anyDO*.tmpalready present. Service start-type is registry state, so the single early layer protects every later step.-ErrorAction SilentlyContinueon the service ops so a future base without DoSvc doesn't fail the build — absence is success.Cost: the new leading layer invalidates the cached VS Build Tools install, so the next build re-downloads it once (~25 min). Unavoidable, and that cache would eventually have been poisoned by the same bug anyway.
Failure ledger for this image, for the record:
VS Build Tools install + all six layout probes have passed on real hardware, so once this lands the image should finally publish.