-
Notifications
You must be signed in to change notification settings - Fork 0
<fix>[expon]: fix vhost installPath overwrite and test cleanup #3360
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
6b4521b
3b5bda3
80df074
a84a36e
f19223a
24d4f3b
f563992
6545350
76490a5
461e8a2
32e1e94
addec8c
26b8b1a
be53c72
e1dee9f
3bd062b
aaeaf39
f41558d
673be94
7f53f5a
72ce6ef
a9a3994
34bceb1
3e02188
799a84f
8c8ed73
7a6d5d7
62e3db5
bec4623
ce0a020
16f5890
96db963
beccef9
8af5cd8
68791ea
107905d
8176aa9
bf1d8ea
2a4e85a
f55f04a
fd02d47
34a77bc
6014606
0566614
36fcfb5
4449936
9516f11
8f4ac96
5217d8f
a1b38d2
709bbc5
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||
|---|---|---|---|---|---|---|---|---|
|
|
@@ -411,9 +411,8 @@ public void run(final FlowTrigger trigger, Map data) { | |||||||
| if (ordered != null) { | ||||||||
| vmUuids = ordered; | ||||||||
|
|
||||||||
| logger.debug(String.format("%s ordered VMs for host maintenance, to keep the order, we will migrate VMs one by one", | ||||||||
| ext.getClass())); | ||||||||
| migrateQuantity = 1; | ||||||||
| logger.debug(String.format("%s ordered VMs for host maintenance, migrate quantity: %d", | ||||||||
| ext.getClass(), migrateQuantity)); | ||||||||
| } | ||||||||
| } | ||||||||
|
|
||||||||
|
|
@@ -1443,7 +1442,7 @@ public String getName() { | |||||||
|
|
||||||||
| @Override | ||||||||
| protected String getDeduplicateString() { | ||||||||
| return String.format("connect-host-%s", self.getUuid()); | ||||||||
| return String.format("connect-host-%s", self == null ? "unknown" : self.getUuid()); | ||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 避免把不同主机退化为同一个去重键。 Line 1445 在 建议修复- return String.format("connect-host-%s", self == null ? "unknown" : self.getUuid());
+ String hostUuid = self != null ? self.getUuid() : msg.getHostUuid();
+ return String.format("connect-host-%s", hostUuid == null ? "unknown" : hostUuid);📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||
| } | ||||||||
| }); | ||||||||
| } | ||||||||
|
|
||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| -- ZSTAC-75319: Add normalizedModelName column for GPU spec dedup | ||
| CALL ADD_COLUMN('GpuDeviceSpecVO', 'normalizedModelName', 'VARCHAR(255)', 1, NULL); | ||
| CALL CREATE_INDEX('GpuDeviceSpecVO', 'idx_gpu_spec_normalized_model', 'normalizedModelName'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
静默吞咽 Throwable 可能导致调用方永远挂起
当
isDryRun=true且dryRunCompletion==null(或isDryRun=false且completion==null)时,该 Throwable 被完全静默丢弃,调用方的ReturnValueCompletion回调永远不会触发,造成无限挂起。与此形成对比的是
done()方法(第 88–119 行)直接调用dryRunCompletion.fail(...)/completion.fail(...)而没有任何 null 检查——若 completion 为 null 时done()会立即抛出 NPE,使问题暴露;但此处的 null 守卫反而将错误隐藏,使故障模式从"立即可见的崩溃"变成"难以排查的静默挂起"。从
allocate(ReturnValueCompletion)和dryRun(ReturnValueCompletion)的实现来看,completion/dryRunCompletion在start()调用前已经被赋值,正常路径下不应为 null。建议去掉 null 守卫,或至少在 null 时补充一条 error 级别日志并触发断言,以保持与done()的行为一致性。🐛 建议修复——移除静默吞咽,保持与 done() 一致
} catch (Throwable t) { logger.warn("unhandled throwable", t); - String errMsg = t != null ? t.toString() : "unknown error"; - if (isDryRun) { - if (dryRunCompletion != null) { - dryRunCompletion.fail(inerr(ORG_ZSTACK_COMPUTE_ALLOCATOR_10019, errMsg)); - } - } else if (completion != null) { - completion.fail(inerr(ORG_ZSTACK_COMPUTE_ALLOCATOR_10019, errMsg)); + String errMsg = t.toString(); + if (isDryRun) { + dryRunCompletion.fail(inerr(ORG_ZSTACK_COMPUTE_ALLOCATOR_10019, errMsg)); + } else { + completion.fail(inerr(ORG_ZSTACK_COMPUTE_ALLOCATOR_10019, errMsg)); } }🤖 Prompt for AI Agents