全量复核 4676 项出现 4 失败 6 错误,全是集成时翻为默认开启的 严格快照校验(设计 §2.2)的连锁反应——旧测试用未登记/未标记 快照走 legacy 放行路径。按新语义逐项适配,不改生产校验本身: - test_chv_opt_stage1.CrossTenantRestoreTest:跨租户拒绝的审计 事件改断言 vm_restore_denied(严格路径的设计事件; vm_restore_tenant_denied 只在显式关闭严格校验时出现); legacy 警告放行测试改走显式 CHV_SNAPSHOT_STRICT_TENANT=0。 - test_chv_v3_fixes(5 个 restore 测试):登记带匹配 tenant (proj1)的快照,意图不变(盘预检 / source_url / 清旧 VMM 仍由各自断言覆盖)。 - test_cloud_hypervisor.LifecycleTest:登记 file:///snap/1 (tenant proj1),restore/resume 顺序断言不变。 - 长函数:B 轨合入把 _run_with_persistent_vm 推到 53 行,超 50 行架构上限;finally 收尾块抽为 _suspend_persistent_after_task。 针对性 12 项全部通过;全量待重跑。
This commit is contained in:
1 parent
04a208a98b
commit
6c03ac9b0f
4 files changed
+45
-13
No files matched your search
+15
-11
@@ -3322,17 +3322,21 @@ class CloudHypervisorExecutor(Executor):
|
||||
result["resume_seconds"] = resume_seconds
|
||||
return result
|
||||
finally:
|
||||
try:
|
||||
if self._vm_proc_dead({"id": vm}):
|
||||
# VM 已死:暂停无意义,清登记,免得下次
|
||||
# acquire 把死 VM 当可用预热机。
|
||||
if tenant:
|
||||
clear_persistent_vm(self.state_dir, tenant)
|
||||
else:
|
||||
self.suspend_after_task({"id": vm},
|
||||
tenant_id=tenant)
|
||||
except Exception:
|
||||
pass
|
||||
self._suspend_persistent_after_task(vm, tenant)
|
||||
|
||||
def _suspend_persistent_after_task(self, vm, tenant):
|
||||
"""持久任务收尾(_run_with_persistent_vm 的 finally 段,
|
||||
拆出只为满足 50 行函数上限):VM 已死即清登记(免得
|
||||
下次 acquire 把死 VM 当可用预热机),否则暂停回池;
|
||||
收尾失败不掩盖任务本身的结果。"""
|
||||
try:
|
||||
if self._vm_proc_dead({"id": vm}):
|
||||
if tenant:
|
||||
clear_persistent_vm(self.state_dir, tenant)
|
||||
else:
|
||||
self.suspend_after_task({"id": vm}, tenant_id=tenant)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
def dispatch_task_persistent(self, task: dict,
|
||||
extra_env: dict | None = None,
|
||||
|
||||
Reference in new issue
Block a user