eve-k pillar: upgrade longhorn-manager to v1.9.1 and fix BackupTargetName on failover#5765
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #5765 +/- ##
===========================================
+ Coverage 19.52% 29.87% +10.34%
===========================================
Files 19 18 -1
Lines 3021 2417 -604
===========================================
+ Hits 590 722 +132
+ Misses 2310 1549 -761
- Partials 121 146 +25 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
06c8480 to
af63985
Compare
|
rebased off latest master |
af63985 to
02b9878
Compare
zedi-pramodh
left a comment
There was a problem hiding this comment.
LGTM, just few comments on the document.
Also please explain how de-scheduler works.
02b9878 to
61fce74
Compare
61fce74 to
39d4781
Compare
|
We still need some documentation on de-scheduler. |
39d4781 to
63469d5
Compare
Done, expanded on the policy and trigger under the '### Failback handling' section. |
|
/rerun red |
|
@andrewd-zededa , pls, rebase on top of master. |
Volumes migrated from longhorn < v1.7 may have an empty BackupTargetName. The v1.9.x webhook validator rejects any Update() where BackupTargetName is empty, producing "backup target name cannot be empty" errors during failover. Set it to "default" when unset before calling Update(). Also clarify failover.md: kubevirt virtualization support means HV=k. Document Kubernetes object state timeline for VMIRs app failover in docs/failover.md, covering node NotReady through new VMI Running, including EVE-specific tolerateSec=15 and logcollectInterval=10s timing, best-case timing summary, and descheduler-based failback handling. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Andrew Durbin <andrewd@zededa.com>
Bump github.com/longhorn/longhorn-manager v1.6.0 → v1.9.1 with go mod tidy and go mod vendor. Transitive bumps include: - k8s.io/* v0.32.5 → v0.33.3 - sigs.k8s.io/controller-runtime v0.16.1 → v0.20.4 - sigs.k8s.io/structured-merge-diff/v4 v4.4.3 → v4.7.0 - prometheus/client_golang v1.19.1 → v1.22.0 - gorilla/websocket, onsi/gomega, and several others Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Andrew Durbin <andrewd@zededa.com>
63469d5 to
a420786
Compare
|
The yetus failure is not clear, no listing even runs on this PR. |
|
Rebased, yetus seems to not even run which may be due to all the vendor changes. |
|
FWIW all 4 eden smoke tests fail with the know issue with FAIL: TestHWInventory |
Description
Upgrades
github.com/longhorn/longhorn-managerfrom v1.6.0 to v1.9.1 inpkg/pillarand fixes a failover regression that surfaces when volumes havebeen migrated forward from older longhorn versions.
Fix: BackupTargetName empty on migrated volumes (
kubeapi/longhorninfo.go)Longhorn v1.9.x introduces a webhook validator that rejects any volume
Update()whereSpec.BackupTargetNameis empty:Volumes migrated from longhorn < v1.7 predate the
BackupTargetNamefieldand carry an empty value.
longhornVolumeSetNode()— called during failover— hits this validator and fails. The fix sets
BackupTargetNameto"default"when the field is empty before callingUpdate(). ThedefaultBackupTarget CR is always present in a longhorn installation,even when no external backup target is configured (empty URL).
Dependency bump (
go.mod/ vendor)go mod tidyandgo mod vendorapplied. Notable transitive bumps:k8s.io/*v0.32.5 → v0.33.3sigs.k8s.io/controller-runtimev0.16.1 → v0.20.4sigs.k8s.io/structured-merge-diff/v4v4.4.3 → v4.7.0prometheus/client_golangv1.19.1 → v1.22.0PR dependencies
None.
How to test and validate this PR
(i.e., volumes whose
Spec.BackupTargetNameis empty).longhornVolumeSetNodeno longer logs"backup target name cannot be empty" and the volume successfully
migrates to the surviving node.
Changelog notes
Optimize a failover of HV=k applications, trimming time spent migrating volumes.
PR Backports
Checklist
And the last but not least:
check them.
Please, check the boxes above after submitting the PR in interactive mode.