编号:D-05 严重级:low 工作线:存储、配置、命令行与部署(internal/store、internal/config、cmd/nixmsg 命令、deploy) 来源:审查 P-23、P-27、P-28 依赖:无 被依赖:无
pre-migrate-v{当前}-to-v{目标}.db
VERSION
git describe
go build
-ldflags "-X main.Version=…"
ARG VERSION
applyEmptyDefaults
grace_seconds: 0
max_frame_bytes <= 786432
nixmsg admin set-password
admin_sessions
internal/store/migrate.go、Taskfile.yml、taskfiles/q.yml、deploy/Dockerfile、internal/config/config.go、cmd/nixmsg/admin.go。
internal/store/migrate.go
Taskfile.yml
taskfiles/q.yml
deploy/Dockerfile
internal/config/config.go
cmd/nixmsg/admin.go
无跨线冲突。若 C-03 新增的迁移先合入,本条的迁移备份命名按新版本号验证。
nixmsg version
max_frame_bytes
以下是本次复审各区审查报告的原文段落。A、M、I、P、S 开头的是原始发现编号(A 管理后台与网页、M 消息核心、I 身份认证群在线、P 传输平台部署、S SDK)。解决方案以本 issue 上方的"结论与统一方案"为准;原文里的方案与之不一致时,按上方执行。
restart: unless-stopped
store/migrate.go:40-44
101-114
pre-migrate-v{当前版本}-to-v{目标版本}.db
Version
"dev"
server_version
version.go:9
serve.go:109
Dockerfile:22
>= 0
config.go:145-147
188-193
204-206
broker.go:22
MaximumPacketSize = 786432
复审基线:main 4059a15(2026-09-30)。编号说明、各工作线的合并顺序、共享文件归属见总览 #7。
4059a15
已合入 origin/main 0c9b459。落地提交 57c2f70 fix: 修复写队列 busy 恢复、关闭安全、备份与配置构建问题 (#31)。
0c9b459
57c2f70
No dependencies set.
The note is not visible to the blocked user.
编号:D-05 严重级:low 工作线:存储、配置、命令行与部署(internal/store、internal/config、cmd/nixmsg 命令、deploy) 来源:审查 P-23、P-27、P-28
依赖:无 被依赖:无
结论与统一方案
pre-migrate-v{当前}-to-v{目标}.db),已存在就复用;复制前检查剩余磁盘空间。(审查 P-23)VERSION变量(默认取git describe),go build时加-ldflags "-X main.Version=…";Dockerfile 加ARG VERSION并注入。(审查 P-27)applyEmptyDefaults对"写 0 有意义"字段的回填;grace_seconds: 0是按 0 生效还是在 Validate 里报错,二选一并记入 DEVIATIONS;Validate 增加max_frame_bytes <= 786432。(审查 P-28)nixmsg admin set-password成功后清空admin_sessions。这个命令用于忘记密码或密码泄露后的恢复,旧会话应全部作废;它和后台改密"保留当前会话、作废其他会话"不同,命令行没有当前会话。(管理后台审查的待核实项,总审查人确认按此处理)改动文件
internal/store/migrate.go、Taskfile.yml、taskfiles/q.yml、deploy/Dockerfile、internal/config/config.go、cmd/nixmsg/admin.go。与其他问题的交互 / 冲突说明
无跨线冲突。若 C-03 新增的迁移先合入,本条的迁移备份命名按新版本号验证。
验收与测试
nixmsg version显示注入的版本号。grace_seconds: 0按选定规则处理;max_frame_bytes超过 786432 时校验失败。问题明细(各区审查原文,证据含文件与行号)
[P-23] 迁移失败时,每次重启都全量备份一次
restart: unless-stopped会反复重启容器,每次复制整个库,可能写满磁盘。store/migrate.go:40-44、101-114。pre-migrate-v{当前版本}-to-v{目标版本}.db),已存在就复用;复制前检查剩余磁盘空间。internal/store/migrate.go[P-27] 构建时没注入版本号:镜像和发布的二进制都显示 "dev"
Version默认是"dev",Taskfile 和 Dockerfile 都没有注入版本号。hello 响应里的server_version和后台概览都显示 dev,和发布标签 0.1.0 对不上。version.go:9;serve.go:109;Dockerfile:22;Taskfile.yml的 build 任务。server_version)。VERSION变量(默认取git describe),go build时加-ldflags "-X main.Version=…";Dockerfile 加ARG VERSION并同样注入。Taskfile.yml、taskfiles/q.yml、deploy/Dockerfilenixmsg version,显示注入的版本号。[P-28] 配置里显式写 0 的字段被静默改回默认;max_frame_bytes 没有上限
grace_seconds: 0会被改成 60,而 Validate 明确允许>= 0,运维以为关掉了宽限,其实没有。max_frame_bytes可以配成 100 万,hello 会按这个值告诉客户端,但 broker 的最大包长写死是 786432,客户端按告知的值发包会被直接断开。config.go:145-147、188-193、204-206;broker.go:22。MaximumPacketSize = 786432。applyEmptyDefaults里的回填。max_frame_bytes <= 786432。internal/config/config.gograce_seconds: 0按选定规则处理;max_frame_bytes超过 786432 时校验失败。复审基线:main
4059a15(2026-09-30)。编号说明、各工作线的合并顺序、共享文件归属见总览 #7。已合入 origin/main
0c9b459。落地提交57c2f70fix: 修复写队列 busy 恢复、关闭安全、备份与配置构建问题 (#31)。