Skip to content

Transition KVM disk-only VM snapshot to Error state on delete failure - #14283

Draft
DaanHoogland wants to merge 1 commit into
apache:4.22from
shapeblue:ghi14019-kvmVmSnapshotDeleteErrorState
Draft

DaanHoogland wants to merge 1 commit into
apache:4.22from
shapeblue:ghi14019-kvmVmSnapshotDeleteErrorState

Conversation

@DaanHoogland

Copy link
Copy Markdown
Contributor

deleteVMSnapshot in KvmFileBasedStorageVmSnapshotStrategy transitioned the snapshot to Expunging but had no exception handling, so any exception thrown by the merge/delete helpers (e.g. an agent command timeout) left the snapshot permanently stuck in Expunging. VMSnapshotManagerImpl.hasActiveVMSnapshotTasks treats Expunging as active work, so this permanently blocked reboot and further snapshot operations on the VM.

Wrap the delete body in a try/catch, mirroring the existing pattern already used by takeVMSnapshot and revertVMSnapshot in the same class: on any RuntimeException, transition the snapshot to Error via the existing Expunging -> OperationFailed state machine transition before rethrowing.

Test: KvmFileBasedStorageVmSnapshotStrategyTest#testDeleteVMSnapshotMarksSnapshotFailedWhenDeleteThrowsAfterExpungeRequested fails without this fix (no OperationFailed transition is ever fired) and passes with it.

Description

This PR...

Fixes: #14019

Types of changes

  • Breaking change (fix or feature that would cause existing functionality to change)
  • New feature (non-breaking change which adds functionality)
  • Bug fix (non-breaking change which fixes an issue)
  • Enhancement (improves an existing feature and functionality)
  • Cleanup (Code refactoring and cleanup, that may add test cases)
  • Build/CI
  • Test (unit or integration test code)

Feature/Enhancement Scale or Bug Severity

Feature/Enhancement Scale

  • Major
  • Minor

Bug Severity

  • BLOCKER
  • Critical
  • Major
  • Minor
  • Trivial

Screenshots (if appropriate):

How Has This Been Tested?

How did you try to break this feature and the system with this change?

…e failure

deleteVMSnapshot in KvmFileBasedStorageVmSnapshotStrategy transitioned the
snapshot to Expunging but had no exception handling, so any exception thrown
by the merge/delete helpers (e.g. an agent command timeout) left the
snapshot permanently stuck in Expunging. VMSnapshotManagerImpl.hasActiveVMSnapshotTasks
treats Expunging as active work, so this permanently blocked reboot and
further snapshot operations on the VM.

Wrap the delete body in a try/catch, mirroring the existing pattern already
used by takeVMSnapshot and revertVMSnapshot in the same class: on any
RuntimeException, transition the snapshot to Error via the existing
Expunging -> OperationFailed state machine transition before rethrowing.

Test: KvmFileBasedStorageVmSnapshotStrategyTest#testDeleteVMSnapshotMarksSnapshotFailedWhenDeleteThrowsAfterExpungeRequested
fails without this fix (no OperationFailed transition is ever fired) and
passes with it.
@codecov

codecov Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 10.81081% with 33 lines in your changes missing coverage. Please review.
✅ Project coverage is 18.00%. Comparing base (250695e) to head (678ed74).
⚠️ Report is 3 commits behind head on 4.22.

Files with missing lines Patch % Lines
...napshot/KvmFileBasedStorageVmSnapshotStrategy.java 10.81% 33 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff              @@
##               4.22   #14283      +/-   ##
============================================
- Coverage     18.00%   18.00%   -0.01%     
+ Complexity    16220    16218       -2     
============================================
  Files          5936     5936              
  Lines        535716   535720       +4     
  Branches      65596    65596              
============================================
- Hits          96457    96439      -18     
- Misses       428269   428294      +25     
+ Partials      10990    10987       -3     
Flag Coverage Δ
uitests 4.02% <ø> (ø)
unittests 19.07% <10.81%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant