优化加载后删除节点的逻辑;和数据库查询性能

This commit is contained in:
strepsiades
2026-04-02 19:31:04 +08:00
parent 74df53889c
commit 543c3ff906
17 changed files with 571 additions and 32 deletions
+16 -1
View File
@@ -276,8 +276,14 @@ def e01_bootstrap(
*,
node: "SyncNode",
is_create_zombie: bool,
bootstrap_source_present: bool = True,
has_binding_record: bool = False,
) -> Decision:
context = {"is_create_zombie": is_create_zombie}
context = {
"is_create_zombie": is_create_zombie,
"bootstrap_source_present": bootstrap_source_present,
"has_binding_record": has_binding_record,
}
decision = _dispatch_required(
runtime,
node=node,
@@ -289,6 +295,15 @@ def e01_bootstrap(
_apply_decision(runtime, node=node, decision=decision, fields={"binding_status", "action", "status"})
node.error = None
return decision
if decision.to_state == "S17":
_apply_decision(runtime, node=node, decision=decision, fields={"binding_status", "action", "status"})
reason_text = decision_note(decision) or "<no-reason>"
node.context["bootstrap_blocked"] = True
node.context["bootstrap_block_reason"] = "source_missing_after_persistence_refresh"
node.context["bootstrap_block_errors"] = [reason_text]
node.context["bootstrap_source_present"] = False
node.error = f"BOOTSTRAP_SOURCE_MISSING: {reason_text}"
return decision
if decision.to_state == "S15":
reason_text = decision_note(decision) or "<no-reason>"
node.append_log(