Skip to content

Release 4.0.0#146

Merged
disperate merged 5 commits into
cloudscale-ch:masterfrom
disperate:release/4.0.0
Mar 30, 2026
Merged

Release 4.0.0#146
disperate merged 5 commits into
cloudscale-ch:masterfrom
disperate:release/4.0.0

Conversation

@disperate
Copy link
Copy Markdown
Contributor

No description provided.

mweibel and others added 5 commits March 27, 2026 10:58
ControllerPublishVolume previously overwrote ServerUUIDs unconditionally,
silently moving an attached volume to a new node. When the subsequent
ControllerUnpublishVolume for the old node found the volume no longer
there, it returned success without detaching, leaving a stale
VolumeAttachment that caused Multi-Attach deadlocks in
production.

Fix: fetch the volume before attaching. If it is attached to a different
node return FailedPrecondition so the external-attacher waits for the old
detach to complete first. If already attached to the requested node return
idempotent success.

Also add volume locks (TryAcquire/Release, already used on the node side)
to DeleteVolume, ControllerPublishVolume, ControllerUnpublishVolume,
CreateSnapshot, and ControllerExpandVolume to prevent TOCTOU races between
concurrent mutating operations on the same volume.
@disperate disperate requested a review from alakae March 30, 2026 12:58
Copy link
Copy Markdown
Contributor

@alakae alakae left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@disperate disperate merged commit 0aa8b24 into cloudscale-ch:master Mar 30, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants