Skip to content

e2e: assert PVC state after Disable DR #2649

Description

@raaizik

Problem

The e2e Disable subtest does not verify that application PVCs survive disable DR correctly. After disable, DisableProtection only checks workload health (for deploy workloads: Deployment Available=True), not PVC state.

e2e/dractions/actions.go — after DRPC/VRG cleanup, only Workload().Health() is called once (no retry loop like Enable/Failover use via WaitWorkloadHealth).

e2e/workloads/deploy.goHealth() checks deployment conditions only. PVC existence/phase is used in statusForCluster() for reporting, not in the disable validation path.

This allowed a regression from #2602: with skipPVCDisownership=true during VRG deletion, PVCs could enter Terminating while the deployment still appeared healthy, so TestDR/*/Disable passed.

Expected behavior after Disable DR

When do-not-delete-pvc is set (as e2e already does in annotateDRPCDoNotDeletePVC), each protected PVC on the preferred cluster should be:

  • present
  • status.phase == Bound
  • metadata.deletionTimestamp unset
  • no ownerReferences to VolSync ReplicationSource / ReplicationDestination (disowned before RS/RD/RGS/RGD removal)

The workload (deployment/pod) should remain healthy but that alone is not sufficient.

Reproduction

  1. Run disable DR on a VolSync-protected CephFS workload
  2. TestDR/disapp-deploy-cephfs/Disable (or equivalent) passes
  3. Post disable PVC inspection shows the bug:
{
  "phase": "Bound",
  "deletionTimestamp": "2026-07-06T10:48:56Z",
  "ownerReferences": [
    {
      "kind": "ReplicationSource",
      "name": "busybox-pvc",
      ...
    }
  ]
}

Metadata

Metadata

Assignees

Labels

testTesting related issue

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions