-
Notifications
You must be signed in to change notification settings - Fork 118
Open
Description
[任务] 修复 Scorpio:稳定 Antares 挂载/退出流程、修正 Dicfuse parent.children 一致性,并支持可配置 HTTP 绑定地址
[任务分值] 15 分
[背景描述]
在当前 Mega 的 scorpio 组件中,Antares(FUSE/overlay + Dicfuse)在以下场景容易出现不稳定或行为不一致:
- 挂载时序问题:Dicfuse 目录树尚未完全初始化时就开始 FUSE/Antares 流程,可能导致挂载失败或访问异常。
- overlay 层级遮蔽问题:CL(可选工作区层)与 Dicfuse 层的优先级不合理时,可能意外遮蔽主视图。
- 持久化恢复后一致性问题:DB/索引恢复后可能出现“path→inode 存在但
parent.children缺失”的不一致,影响目录枚举/遍历。 - HTTP 服务不可配置:daemon HTTP bind 地址/端口写死,容器/宿主环境端口映射变化时难以对齐;并且退出时缺少优雅 shutdown,可能遗留挂载或资源未清理。
本任务目标是把上述问题系统化修复,提升 scorpio 在本地、容器及 CI 场景下的可用性与稳定性。
[需求描述]
-
1) 稳定 Antares/Dicfuse 初始化与挂载
- 对 root path(
/)和非 root path 的 Dicfuse 获取逻辑增加“等待 ready”机制,设置合理超时(如 120s),超时需返回明确错误信息(英文)。 - 调整 overlay lower layers 组合策略,确保:
- Dicfuse 作为主 lower layer
- CL dir(如存在)作为“附加层”,不应遮蔽 Dicfuse 主视图(保持 best-effort)
- 对 root path(
-
2) 修复 Dicfuse
parent.children一致性- 在类似
upsert_inode的路径/节点写入逻辑中,处理“inode 已存在但 parent.children 缺失”的场景:- 若
persistent_path_store中 parent 存在且不包含该 inode,需补写 children 关系,避免恢复后状态不一致。
- 若
- 增加对应的单元测试/回归测试(覆盖恢复场景)。
- 在类似
-
3) 支持可配置 HTTP bind address(CLI + 容器透传)
- 为
scorpio增加 CLI 参数:--http-addr <ip:port>,默认0.0.0.0:2725。 - 更新
docker/dev-image/entrypoint.sh与.env.example:- 新增环境变量(示例):
SCORPIO_HTTP_ADDR=0.0.0.0:2725 - 若用户已显式传入
--http-addr,脚本不得重复追加同名 flag - 需要确保
SCORPIO_API_BASE_URL在 worker 内与端口覆盖一致(至少正确解析 IPv4ip:port,IPv6 情况允许文档提示手动设置)
- 新增环境变量(示例):
- 为
-
4) 退出与清理
- HTTP server 需要支持 graceful shutdown(例如
oneshot通道触发)。 - shutdown 时触发 Antares 清理逻辑(如
shutdown_cleanup_impl),并设置超时保护(例如 15s)。 - main 退出流程应保证:
- 先停 HTTP daemon(触发清理)
- 再处理 FUSE unmount(避免挂载残留/脏状态)
- 同时兼容 Unix 的 SIGTERM/SIGINT 与非 Unix 的 ctrl-c。
- HTTP server 需要支持 graceful shutdown(例如
[代码标准]
- 所有 PR 提交必须签署
Signed-off-by和 使用GPG签名,即提交代码时(使用git commit命令时)至少使用-s -S两个参数,参考 Contributing Guide; - 所有 PR 提交必须通过
GitHub Actions自动化测试,提交 PR 后请关注GitHub Actions结果; - 代码注释均需要使用英文;
[PR 提交地址] 提交到 mega 仓库的 main 分支 `` 目录;
[开发指导]
- 认领任务参考 r2cn 开源实习计划 - 任务认领与确认;
[导师及邮箱] 请申请此题目的同学使用邮件联系导师,或加入到 R2CN Discord 后在 #p-meta 频道和导师交流。
- Quanyi Ma genedna@gmail.com
- Tianxing Ye yetianxing2014@gmail.com
[备注]
- 认领实习任务的同学,必须完成测试任务和注册流程,请参考: r2cn 开源实习计划 - 测试任务 和 r2cn 开源实习计划 - 学生注册与审核