CelebiChrono v1.0.0b3
原始数据
register-data <runner> <remote_path>:数据已经在计算农场上时,无需经过你的 网络即可登记 —— MD5 在 runner 上计算,数据拷贝到 Yuki 在该 runner 上的受管 impressions 区域,本地任务成为指向它的指针。以后台任务运行并实时显示进度;重复 登记同一路径是幂等的,任务的默认 runner 会设为托管数据的那个 runner。- 数据命令改名:
use-data→attach-data(领养 DITE 印象,零传输)、send→upload-data(本地目录上传到 DITE,带进度条)。旧名字彻底移除。 verify-data:重算当前数据任务的 MD5 并与登记的 UUID 比对(远端数据在宿主 runner 上重算)。cache_on_runner取代use_eos:REANA 把结果拷贝到 EOS,SSH 拷贝到 runner 的 受管 impressions 区域,native/dry 无效果。- 原始数据任务:
ls不再显示 Memory limit / Validated;status显示 stageout 文件表(含 in-Yuki 标记);archived显示为[coda][archived]。
Runner
register-runner/update-runner支持 ssh 选项(--ssh-host、--ssh-user、--ssh-key-path、--ssh-port、--remote-workdir)与 native 选项(--workdir、--cores、--mem-mb、--conda-path、--snakemake-path)。- SSH 密钥自动上传:注册/更新时读取客户端路径并发送,服务端保存;不指定密钥
路径时依次尝试
~/.ssh/id_rsa/~/.ssh/id_ed25519。 test-runner <name>探测连通性、snakemake、conda 与远端工作目录;结果持久化 并作为 HEALTH 列显示在runners中。runner-envs <name>列出 ssh/native runner 上的 conda 环境。- Chern shell 新增
test_runner、runner_envs、register_data、cache_on_runner及 runner 名 Tab 补全;shell 中的register_runner支持 ssh。
引擎日志
engine-logs现在能渲染 ssh/native 日志结构;工作流日志一节标题为 YUKI LOG。engine-logs --fetch在服务器上按需生成引擎日志;不带--fetch时,只要 Yuki 工作流日志存在仍会返回。错误响应体显示为错误信息,而非空的 N/A 表格。
修复与质量
- DITE 端口回退修正为
127.0.0.1:3315;修复add_host包装器参数不匹配;runner Tab 补全缓存现在会被正确填充。 tqdm依赖已在pyproject.toml中声明。- 全项目 pylint 评分 10.00/10。
Yuki(DITE 服务器)
- 远端数据登记:
register-data在 Yuki 上作为后台任务运行(hashing → copying → registering);印象状态running→archived,远端托管数据通过file_status列出。 verify-data重算 MD5(远端数据在宿主 runner 上重算)并与登记 UUID 比对。- SSH 工作流:远端布局
workflows/<project>/<uuid>/+ 受管impressions/缓存;原始数据输入在 runner 上自动缓存,并由 Snakefilesetup规则 staging —— 与 REANA 使用 EOS 的机制相同。 cache_on_runner(取代use_eos):REANA 上为 EOS,SSH 上为 runner impressions,native/dry 无效果。- Runner 探测端点:
/test-runner、/runner-health、/runner-envs;runner 设置/健康存储;SSH 密钥存放于$YUKIDIR/keys/。 - 引擎日志:
/engine-log?fetch=true按需生成,否则返回 Yukiworkflow.log。 - Docker 合并(非 root 多阶段镜像、统一
build.sh)、选择性收集与文件可见性、 全量 pylint 清理。
Runner 缓存管理
runner 的受管 impressions 缓存(<remote-workdir>/impressions/...)现在可以
从 shell 双向管理:
cache-results <runner>把当前印象留在 runner 上的结果(工作流的 stageout)保存进该 runner 的受管缓存 —— 相当于工作流自带 cache 规则的手动 版本:拷贝在 runner 上执行(reflink → hardlink → rsync → copy 链),完成后设为 只读。作为 Yuki 后台任务运行并实时轮询;任务未完成的印象、或 runner 上没有 stageout 的印象会被跳过并给出原因,而不是让整批失败。purge-ssh-runner-cache <runner>从 ssh runner 上清除当前印象的缓存项 (只读项先恢复可写),并同步清理本地登记,不留悬空引用。它不会清除整个 runner 缓存;仍在进行中的登记会被跳过;若清除了注册数据会提示用register-data恢复。whereabouts对齐报告当前印象的数据所在:yuki 本地存储、各 runner 的 workflow/cache 状态、注册宿主 runner —— 数据来自持久化的 distribution 注册表。
三个命令同时存在于 Chern shell(do_*)、celebi-cli 和 shell 函数层。在目录
内执行时,会对全部已 impress 子对象展开(整批一次确认)。Yuki 服务器端新增
yuki purge-ssh-runner-cache CLI,便于在服务器上执行清理。
失败状态处理
- 后端执行失败不再把所有执行任务一律标记为
failed:已处于终态的任务保留 原状态 —— 远端工作流启动失败时任务标记为dissonance,不会覆盖此前已完成的 状态,修复了"工作流启动失败 → 上游任务被错误标记失败 → 下游连锁 Blocked"的 问题。 - SSH 工作流启动失败现在会附上 runner 端
snakemake.log的尾部 (“Remote Snakemake failed: … (exit N)”),不再是一句空白的错误信息。
新增服务器端点
- 新增
POST /purge-runner-cache、POST /cache-results+GET /cache-results/<job_id>、GET /whereabouts/<project>/<impression>支撑上述命令。 - 缓存任务状态存放于
$YUKIDIR/cache-jobs/,register-jobs 辅助函数泛化为 按用途分目录。