You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Guard node-access reconciliation against an empty backend view (#1179)
Code changes of patches/patch-26.06.0 from Euronet-OneEuronet/trident-patched,
branch patch/1179-node-access-reconcile-guard, rebased onto this fork's
master, plus the CHANGELOG entry from fix/1179-backend-volume-view. The
builder's Dockerfile hunk is not included; it is a build
environment change for a private builder, not for upstream.
Problem: on a TridentBackendConfig update or controller start the
concurrent core builds a new backend object with an empty volume map and
reconciles node access on it before the volumes are stored. The desired
node set comes out empty and every rule is deleted from the shared
export policy trident-<backendUUID>, so new NFS mounts are denied on
every node until each node happens to publish again.
Fix, from fix/1179-backend-volume-view:
- Carry the volume map forward when the concurrent core replaces a
backend object (Backend.SetVolumes; master already declared this
method, so only the call sites needed reconciling during the rebase).
- Count publications of subordinate volumes toward the share-source
volume that hosts them.
- In both cores, when the computed node set is empty while publications
still exist for the backend, log a warning, leave the backend marked as
needing reconciliation, and return so the periodic loop retries.
A backend with no publications still reconciles to an empty set.
An image of this change on top of v26.06.0 passed the live reproduction
test on 2026-09-04: three backend reconciles, zero export policy rule
deletions, fresh NFS mounts succeeded on nodes with an existing
VolumeAttachment.
go build, go vet, gofmt, and go test ./core/ ./storage/ are clean.
Refs: #1179
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,6 +10,7 @@
10
10
11
11
-**Kubernetes:** Fixed race conditions and state handling for concurrent publish/unpublish, clone, cache, and backend update operations.
12
12
-**Kubernetes:** Fixed export policy race conditions and concurrent publish/unpublish handling for subordinate volumes and read-only clones in ONTAP-NAS and ONTAP-NAS-Economy drivers.
13
+
-**Kubernetes:** Fixed node-access reconciliation removing every rule from the shared backend export policy of ONTAP-NAS drivers with `autoExportPolicy` during backend updates, controller restarts, and for backends published only through subordinate volumes (Issue [#1179](https://github.com/NetApp/trident/issues/1179)).
13
14
-**Kubernetes:** Fixed ONTAP-NAS-Economy FlexVol discovery after MetroCluster failover when snapshot policies differ (Issue [#1082](https://github.com/NetApp/trident/issues/1082)).
-**Kubernetes:** Fixed ONTAP-SAN and ONTAP-SAN-Economy import and resize behavior, including `fsType` validation, volume metadata handling, and autogrow mode behavior.
0 commit comments