Repository navigation
Conversation
|
@blueorangutan package |
|
@Damans227 a [SL] Jenkins job has been kicked to build packages. It will be bundled with no SystemVM templates. I'll keep you posted as I make progress. |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #14401 +/- ##
=========================================
Coverage 20.21% 20.21%
- Complexity 20749 20753 +4
=========================================
Files 6426 6426
Lines 580181 580184 +3
Branches 71033 71034 +1
=========================================
+ Hits 117292 117301 +9
+ Misses 450174 450170 -4
+ Partials 12715 12713 -2
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ el10 ✔️ debian ✔️ suse15. SL-JID 19553 |
| // A queued detach can run after the volume was already detached and attached elsewhere; leave that attachment alone | ||
| if (volume.getInstanceId() == null || volume.getInstanceId() != vmId) { | ||
| logger.warn("Volume {} is no longer attached to VM {}, skipping detach", volume, vm); | ||
| return volume; | ||
| } | ||
|
|
There was a problem hiding this comment.
does what it should, just one cleanup suggestion; add a shouldDetachBeSkipped(Volume voume, VMInstanceVO vm) and make the comment a javadoc. Then return the volume on true.
Fixes #14214
A detach that waits in the queue can run after the volume was already detached and attached to another vm. When it finally runs it still clears the volume's attachment in the database, so CloudStack thinks the volume is free while it is still plugged in. Every later attach to that vm then gets the same device slot and fails with
target 'vdX' duplicated. This makes the detach check that the volume is still attached to the vm it was asked to leave. If it isnt, it logs a warning and leaves the volume alone. The attach side case in the issue (occurrence 4) has no known cause yet and is not covered here.Test:
Unit tests for a detach that runs after the volume moved to another vm, and after it was already detached.
On a KVM lab with 2 hosts, deploy vm A and vm B and attach data volume V to A. While V is on A, send back to back: detach V (job 1), stop A, detach V again (job 2). Job 2 waits behind the stop. When job 1 is done, attach V to B. Job 2 runs after the stop finishes.
Before: job 2 clears V's attachment while V is still plugged into B, and the next attach to B fails with
target 'vdX' duplicated.After: job 2 succeeds and leaves V on B. A later attach to B gets the next slot.