kernel-archive: keep the bytes it published - #240
Merged
Conversation
gpkg 不是位元可重现的,外层 tar 带建置时间,同一版本重建一次摘要就变。 PKGDIR 是建置快取,重建会覆盖,所以镜像上的归档一旦丢失,从 PKGDIR 恢复 出来的档案与 `sys-kernel/gentoo-cjk-kernel-bin` 的 Manifest 不一致,每个 用户的 digest 检查都会失败。这一点在重建演练里实测确认。 发布成功之后把发布出去的那份位元组存进 `PUBLISHED_DIR`,预设 `/var/lib/binhost/kernel-published/<系列>/<发布名>`。发布失败不存;同名 再次发布覆盖。 保留规则沿用现有那套:overlay 不再提供的版本与整条线,远端与本地副本一起 清理,同样受 `MAX_RETIRE` 约束,超过上限时两边都不动。 已经发布但还没有副本的版本会从镜像机补齐,核对 overlay Manifest 的摘要之后 才写入,不符就报错并中止。 `docs/recovery.md` 的内核归档那一节按新行为改写。
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.
重建演练发现的缺口:镜像上的内核归档一旦丢失就恢复不了。
gpkg 不是位元可重现的,外层 tar 带建置时间,同一版本重建一次摘要就变;PKGDIR 是
建置快取,重建会覆盖。实测三个摘要:overlay Manifest 与正式发布的一致
(
49503e6a…),从 PKGDIR 恢复的不同(f74824e7…),建置机上没有摘要相符的副本。所以照 PKGDIR 恢复会让
sys-kernel/gentoo-cjk-kernel-bin的 digest 检查对每个用户失败。
改动
发布成功之后把发布出去的那份位元组存进
PUBLISHED_DIR,预设/var/lib/binhost/kernel-published/<系列>/<发布名>。发布失败不存,同名再次发布覆盖。保留规则沿用现有那套:overlay 不再提供的版本与整条线,远端与本地副本一起清理,
同样受
MAX_RETIRE约束,超过上限时两边都不动。已经发布但还没有副本的版本会从镜像机补齐,核对 overlay Manifest 的摘要之后才写入,
不符就报错中止。两条现有内核线就是这个状态。
测试
变异反证七处全部转红:不保留副本、发布失败也保留、不清理本地旧副本、不退役本地线
目录、不退役远端线目录、补齐不核对摘要、以及超过
MAX_RETIRE时仍动手。其中「不退役本地线目录」原先没有用例覆盖,本 PR 补上。
建置机上真跑过补齐路径:临时远端根放真正已发布的位元组,
PUBLISHED_DIR指向临时目录执行一轮,两条线都补齐,副本的 SHA512 与 overlay Manifest 逐一相符
(
49503e6a…、8a611845…)。临时目录已移除。本机全套测试、
check-copy与建置机容器内的 ShellCheck 通过。docs/recovery.md的内核归档那一节按新行为改写。