github-actions[bot] commented on issue #14232:
URL: https://github.com/apache/cloudstack/issues/14232#issuecomment-5815240910

   ## ๐ŸŽฏ Triage report
   
   When `vm.destroy.forcestop=true` and a KVM host is only briefly 
`Disconnected` (e.g. during a rolling agent/management-server restart), 
destroying a running instance releases its NICs/IPs/volumes and marks it 
stopped without the domain actually being stopped. The domain keeps running 
unmanaged, its IP gets reassigned to a new instance, and its root volume is 
stuck in `Destroy`. This is a well-documented, code-level analysis with logs 
from a real occurrence and a clear root cause identified in 
`VirtualMachineManagerImpl.advanceStop()`/`destroy()`.
   
   ### ๐Ÿ“Š Assessment
   
   | Dimension | Value | Reasoning |
   |---|---|---|
   | **Type** | `type:bug` | Clear defect causing data/state inconsistency and 
resource leaks. |
   | **Component** | `component:kvm` | Issue is specific to KVM/libvirt hosts 
and the KVM power-report/destroy path. |
   | **Severity** | n/a (not applied) | Impact is significant (duplicate IPs, 
stranded storage) similar to #14206 (Major), but left for maintainer judgement 
given the specific `vm.destroy.forcestop` precondition. |
   | **Labels** | type:bug, component:kvm | Conservative labeling; no 
speculative labels added. |
   | **Coding agent** | Needs more info | Root cause and code paths are well 
identified, but the correct fix requires a design decision on how 
`advanceStop()`/`destroy()` should distinguish "host is gone" vs "host is 
temporarily unreachable" across all affected host states (`Disconnected`, 
`Connecting`, `Alert`, `Rebalancing`), which needs maintainer input before an 
agent should attempt an implementation. |
   
   ### ๐Ÿ”— Similar issues
   
   - https://github.com/apache/cloudstack/issues/14206 (related) โ€” same 
end-state (unmanaged running instance, IP reuse, stranded volume) but triggered 
via a stale out-of-band power report during VM start, rather than the destroy 
path with `vm.destroy.forcestop`. The reporter explicitly notes this is the 
same failure mode via a different trigger.
   
   <details><summary>๐Ÿ’ก Notes and suggestions</summary>
   
   - Since #14206 and this issue share the same underlying pattern 
(forced/assumed "stopped" state without host confirmation leading to orphaned 
domains), a maintainer may want to track them together or reference one from 
the other, and consider whether a shared fix (e.g., only allowing forced 
release when host state is `Down`/`Removed`, not merely unreachable) can 
address both.
   - Reproduction requires a host transitioning through `Disconnected` during 
an agent/management-server restart while a destroy with `expunge=true` is in 
flight โ€” this is timing-sensitive and may be easier to validate via targeted 
unit/integration tests around `VirtualMachineManagerImpl.advanceStop()` and 
`releaseVmResources()` than live rolling-upgrade reproduction.
   - Suggested next step: confirm with the reporter/maintainers which host 
states besides `Disconnected` (e.g., `Connecting`, `Alert`, `Rebalancing`) 
should also block the forced release path, since the issue proposes several.
   
   </details>
   
   
   
   > Generated by [Daily Issue 
Triage](https://github.com/apache/cloudstack/actions/runs/36006424928) ยท 
sonnet50 81.1K ยท 
[โ—ท](https://github.com/search?q=repo%3Aapache%2Fcloudstack+%22gh-aw-workflow-call-id%3A+apache%2Fcloudstack%2Fdaily-issue-triage%22&type=issues)
   >
   <details>
   <summary>Add this agentic workflows to your repo</summary>
   
   To install this agentic workflow, run
   
   ```
   gh aw add 
githubnext/agentics/workflows/daily-issue-triage.md@d7c1dc4b72b00607a67caaffdcc216cb64379cf9
   ```
   </details>
   
   
   <!-- gh-aw-agentic-workflow: Daily Issue Triage, engine: copilot, version: 
1.0.52, model: claude-sonnet-5, id: 36006424928, workflow_id: 
daily-issue-triage, run: 
https://github.com/apache/cloudstack/actions/runs/36006424928 -->
   <!-- gh-aw-workflow-call-id: apache/cloudstack/daily-issue-triage -->


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to