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
Ramen e2e test disapp-deploy-cephfs fails randomly during Failover while waiting for the DRPC to become ready. The DRPC reaches phase FailedOver / progression Completed, but lastGroupSyncTime remains unset because VolSync never successfully syncs from the new primary (dr2) to the secondary (dr1).
Root cause analysis of gathered artifacts points to a Submariner Globalnet double-allocation race: Globalnet allocates two global IPs for the same VolSync destination ServiceExport; Lighthouse keeps advertising the first (stale) IP while GlobalIngressIP ends on the second. VolSync then connects to the stale IP and sync fails.
This matches a known Globalnet issue previously reproduced on OpenShift (same service getting two global IPs). This issue documents the Ramen-side failure and evidence; a follow-up Submariner issue will track the Globalnet bug.
Note
This is not a test issue but an actual issue with cephfs based apps in upstream and downstream.
Other CephFS e2e cases in the same run (subscr-deploy-cephfs, appset-deploy-cephfs) completed successfully
Paths below are relative to the tarball root.
1. Failure at the Ramen e2e level
Which test / step failed
Test:disapp-deploy-cephfs
Failed step: Failover from dr1 → dr2, while waiting for DRPC readiness after phase FailedOver
Timeout: FailoverTimeout (15m)
Timeline from e2e log
File: e2e/dr.log
Failover starts:
2026-08-09T10:39:57.927Z INFO disapp-deploy-cephfs dractions/actions.go:165 Failing over workload from cluster "dr1" to cluster "dr2"
2026-08-09T10:39:57.951Z DEBUG disapp-deploy-cephfs dractions/actions.go:308 Updated drpc "ramen-ops/disapp-deploy-cephfs" with action "Failover" to target cluster "dr2"
2026-08-09T10:39:57.951Z DEBUG disapp-deploy-cephfs dractions/retry.go:127 Waiting until drpc "ramen-ops/disapp-deploy-cephfs" reach progression "WaitOnUserToCleanUp" in cluster "hub"
Phase reaches FailedOver, then the test waits for DRPC ready:
2026-08-09T10:42:54.161Z DEBUG disapp-deploy-cephfs dractions/retry.go:74 Waiting until drpc "ramen-ops/disapp-deploy-cephfs" reach phase "FailedOver" in cluster "hub"
2026-08-09T10:42:54.168Z DEBUG disapp-deploy-cephfs dractions/retry.go:85 drpc "ramen-ops/disapp-deploy-cephfs" phase is "FailedOver" in cluster "hub" in 0.007 seconds
2026-08-09T10:42:54.169Z DEBUG disapp-deploy-cephfs dractions/retry.go:28 Waiting until drpc "ramen-ops/disapp-deploy-cephfs" is ready in cluster "hub"
Final failure (~12 minutes later):
2026-08-09T10:54:57.918Z ERROR disapp-deploy-cephfs test/testing.go:55 Failed to failover workload: drpc not ready in cluster "hub" (Available: true, PeerReady: true, ProgressionCompleted: true, lastGroupSyncTime: <nil>): context deadline exceeded
github.com/ramendr/ramen/e2e/test.(*T).Fatalf
/home/github/actions-runner/_work/ramen/ramen/e2e/test/testing.go:55
github.com/ramendr/ramen/e2e/test.(*Context).Failover
/home/github/actions-runner/_work/ramen/ramen/e2e/test/context.go:156
Key e2e observation: DRPC reports Available=true, PeerReady=true, progression completed, but lastGroupSyncTime is nil — no successful VolSync group sync after failover.
2. Failure analysis at the Ramen / VolSync level
After failover, Ramen expects VolSync on the new primary (dr2) to sync to the destination service exported from the secondary (dr1) via Submariner (*.svc.clusterset.local). Sync never succeeds, so DRPC never becomes ready for the e2e readiness check.
status:
actionStartTime: "2026-08-09T10:39:57Z"conditions:
- reason: FailedOverstatus: "True"type: Available
- reason: Successstatus: "True"type: PeerReady
- message: VolumeReplicationGroup (ramen-ops/disapp-deploy-cephfs) on cluster dr2is progressing on protecting workload data (Not all VolSync PVCs are protected),retrying till DataProtected condition is metreason: Progressingstatus: "False"type: Protectedphase: FailedOverprogression: CompletedresourceConditions:
conditions:
- message: All VolSync PVCs are readyreason: Readystatus: "True"type: DataReady
- message: Not all VolSync PVCs are protectedreason: Progressingstatus: "False"type: DataProtected
Notes:
No lastGroupSyncTime is set on the DRPC status (matches e2e lastGroupSyncTime: <nil>).
DataReady=True but DataProtected=False / Protected=False.
status:
conditions:
- message: All VolSync PVCs are readyreason: Readystatus: "True"type: DataReady
- message: Not all VolSync PVCs are protectedreason: Progressingstatus: "False"type: DataProtected
2.3 VolSync ReplicationSource on dr2 (sender) fails to connect
(Same stale address is present on dr1 as well: test/gather.rdr/dr1/namespaces/test-disapp-deploy-cephfs/discovery.k8s.io/endpointslices/volsync-rsync-tls-dst-busybox-pvc-lnwbq.yaml)
2.8 GlobalIngressIP final allocated IP is 242.0.255.252 (mismatch)
Ramen/VolSync export/import objects are present and Ready; the cross-cluster address published for the exported VolSync destination service is wrong relative to the final Globalnet allocation.
For service test-disapp-deploy-cephfs/volsync-rsync-tls-dst-busybox-pvc, Globalnet processes the ServiceExport twice and allocates two different global IPs within ~140ms:
First allocation: 242.0.255.253 (this is what Lighthouse publishes / VolSync connects to).
Second allocation overwrites GlobalIngressIP status to 242.0.255.252 (final gathered CR).
EndpointSlice remains on the first IP → cross-cluster connect to a non-live global IP → VolSync sync fails → Ramen DRPC never gets lastGroupSyncTime → e2e failover times out.
This is the same class of Globalnet “two IPs for one service” failure previously seen on OpenShift.
Summary
Ramen e2e test
disapp-deploy-cephfsfails randomly during Failover while waiting for the DRPC to become ready. The DRPC reaches phaseFailedOver/ progressionCompleted, butlastGroupSyncTimeremains unset because VolSync never successfully syncs from the new primary (dr2) to the secondary (dr1).Root cause analysis of gathered artifacts points to a Submariner Globalnet double-allocation race: Globalnet allocates two global IPs for the same VolSync destination ServiceExport; Lighthouse keeps advertising the first (stale) IP while GlobalIngressIP ends on the second. VolSync then connects to the stale IP and sync fails.
This matches a known Globalnet issue previously reproduced on OpenShift (same service getting two global IPs). This issue documents the Ramen-side failure and evidence; a follow-up Submariner issue will track the Globalnet bug.
Note
This is not a test issue but an actual issue with cephfs based apps in upstream and downstream.
Environment / artifacts
e2e.31308426814-1hub,dr1,dr2(minikube / drenv)subscr-deploy-cephfs,appset-deploy-cephfs) completed successfullyPaths below are relative to the tarball root.
1. Failure at the Ramen e2e level
Which test / step failed
disapp-deploy-cephfsdr1→dr2, while waiting for DRPC readiness after phaseFailedOverTimeline from e2e log
File:
e2e/dr.logFailover starts:
Phase reaches
FailedOver, then the test waits for DRPC ready:Final failure (~12 minutes later):
Key e2e observation: DRPC reports
Available=true,PeerReady=true, progression completed, butlastGroupSyncTimeis nil — no successful VolSync group sync after failover.2. Failure analysis at the Ramen / VolSync level
After failover, Ramen expects VolSync on the new primary (
dr2) to sync to the destination service exported from the secondary (dr1) via Submariner (*.svc.clusterset.local). Sync never succeeds, so DRPC never becomes ready for the e2e readiness check.2.1 DRPC stuck without sync time / DataProtected
File:
test/gather.rdr/hub/namespaces/ramen-ops/ramendr.openshift.io/drplacementcontrols/disapp-deploy-cephfs.yamlNotes:
lastGroupSyncTimeis set on the DRPC status (matches e2elastGroupSyncTime: <nil>).DataReady=TruebutDataProtected=False/Protected=False.2.2 VRG on primary (
dr2) also not DataProtectedFile:
test/gather.rdr/dr2/namespaces/ramen-ops/ramendr.openshift.io/volumereplicationgroups/disapp-deploy-cephfs.yaml2.3 VolSync ReplicationSource on
dr2(sender) fails to connectFile:
test/gather.rdr/dr2/namespaces/test-disapp-deploy-cephfs/volsync.backube/replicationsources/busybox-pvc.yaml2.4 VolSync mover logs: DNS/clusterset name resolves to stale global IP
242.0.255.253File:
test/gather.rdr/dr2/namespaces/test-disapp-deploy-cephfs/pods/volsync-rsync-tls-src-busybox-pvc-msmv2/rsync-tls/current.log2.5 ServiceExport on destination cluster (
dr1) looks healthyFile:
test/gather.rdr/dr1/namespaces/test-disapp-deploy-cephfs/multicluster.x-k8s.io/serviceexports/volsync-rsync-tls-dst-busybox-pvc.yaml2.6 ServiceImport on
dr2is Ready (but does not embed the global IP)File:
test/gather.rdr/dr2/namespaces/test-disapp-deploy-cephfs/multicluster.x-k8s.io/serviceimports/volsync-rsync-tls-dst-busybox-pvc.yaml2.7 Lighthouse EndpointSlice on
dr2advertises stale IP242.0.255.253File:
test/gather.rdr/dr2/namespaces/test-disapp-deploy-cephfs/discovery.k8s.io/endpointslices/volsync-rsync-tls-dst-busybox-pvc-lnwbq.yaml(Same stale address is present on
dr1as well:test/gather.rdr/dr1/namespaces/test-disapp-deploy-cephfs/discovery.k8s.io/endpointslices/volsync-rsync-tls-dst-busybox-pvc-lnwbq.yaml)2.8 GlobalIngressIP final allocated IP is
242.0.255.252(mismatch)File:
test/gather.rdr/dr1/namespaces/test-disapp-deploy-cephfs/submariner.io/globalingressips/volsync-rsync-tls-dst-busybox-pvc.yamlIP mismatch (smoking gun)
GlobalIngressIP.status.allocatedIP242.0.255.252EndpointSliceadvertised address242.0.255.253242.0.255.253:8000Ramen/VolSync export/import objects are present and Ready; the cross-cluster address published for the exported VolSync destination service is wrong relative to the final Globalnet allocation.
2.9 ReplicationDestination on
dr1(receiver)File:
test/gather.rdr/dr1/namespaces/test-disapp-deploy-cephfs/volsync.backube/replicationdestinations/busybox-pvc.yamlDestination side is waiting for sync; the failure is on the path to the destination via the stale global IP.
3. Submariner Globalnet evidence (double allocation)
File:
test/gather.rdr/dr1/namespaces/submariner-operator/pods/submariner-globalnet-7vvr6/submariner-globalnet/current.logFor service
test-disapp-deploy-cephfs/volsync-rsync-tls-dst-busybox-pvc, Globalnet processes the ServiceExport twice and allocates two different global IPs within ~140ms:Interpretation
Creating GlobalIngressIPtwice).242.0.255.253(this is what Lighthouse publishes / VolSync connects to).242.0.255.252(final gathered CR).lastGroupSyncTime→ e2e failover times out.This is the same class of Globalnet “two IPs for one service” failure previously seen on OpenShift.
Related files in the tarball (quick index)
e2e/dr.logtest/gather.rdr/hub/namespaces/ramen-ops/ramendr.openshift.io/drplacementcontrols/disapp-deploy-cephfs.yamltest/gather.rdr/dr2/namespaces/ramen-ops/ramendr.openshift.io/volumereplicationgroups/disapp-deploy-cephfs.yamltest/gather.rdr/dr2/namespaces/test-disapp-deploy-cephfs/volsync.backube/replicationsources/busybox-pvc.yamltest/gather.rdr/dr1/namespaces/test-disapp-deploy-cephfs/volsync.backube/replicationdestinations/busybox-pvc.yamltest/gather.rdr/dr1/namespaces/test-disapp-deploy-cephfs/multicluster.x-k8s.io/serviceexports/volsync-rsync-tls-dst-busybox-pvc.yamltest/gather.rdr/dr2/namespaces/test-disapp-deploy-cephfs/multicluster.x-k8s.io/serviceimports/volsync-rsync-tls-dst-busybox-pvc.yamltest/gather.rdr/dr2/namespaces/test-disapp-deploy-cephfs/discovery.k8s.io/endpointslices/volsync-rsync-tls-dst-busybox-pvc-lnwbq.yamltest/gather.rdr/dr1/namespaces/test-disapp-deploy-cephfs/submariner.io/globalingressips/volsync-rsync-tls-dst-busybox-pvc.yamltest/gather.rdr/dr2/namespaces/test-disapp-deploy-cephfs/pods/volsync-rsync-tls-src-busybox-pvc-msmv2/rsync-tls/current.logtest/gather.rdr/dr1/namespaces/submariner-operator/pods/submariner-globalnet-7vvr6/submariner-globalnet/current.logLogs
Logs: e2e.31308426814-1.tar.gz
Failed build: https://github.com/RamenDR/ramen/actions/runs/31308426814/attempts/1
Successful build: https://github.com/RamenDR/ramen/actions/runs/31308426814/attempts/2
Dpependencies
This is an issue in submariner: submariner-io/submariner#4122