Skip to content

disable early frequent polling by default#2213

Open
sseago wants to merge 1 commit into
openshift:oadp-devfrom
sseago:swap-frequent-polling-default
Open

disable early frequent polling by default#2213
sseago wants to merge 1 commit into
openshift:oadp-devfrom
sseago:swap-frequent-polling-default

Conversation

@sseago
Copy link
Copy Markdown
Contributor

@sseago sseago commented May 21, 2026

Why the changes were made

Early frequent polling is more sensitive to other configuration parameters (parallel backups, item block worker count, qps/burst) in some environments. Disable it by default to prevent perf-related regression

How to test the changes made

Confirm that by default, the CSI_SNAPSHOT_EARLY_FREQUENT_POLLING env var is not set on the velero container and that if dpa.spec.disableCSISnapshotEarlyFrequentPolling is true, then disableCSISnapshotEarlyFrequentPolling is also set to true.

Summary by CodeRabbit

  • Configuration Changes
    • Updated the DataProtectionApplication specification by replacing DisableCSISnapshotEarlyFrequentPolling with EnableCSISnapshotEarlyFrequentPolling. CSI snapshot polling is now disabled by default and requires explicit enablement in your configuration.

@openshift-ci
Copy link
Copy Markdown

openshift-ci Bot commented May 21, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: sseago

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 21, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: c6ba9fbb-afc7-4616-8d0f-0c4f22a2bb8e

📥 Commits

Reviewing files that changed from the base of the PR and between 4300dc0 and eded1bc.

📒 Files selected for processing (5)
  • api/v1alpha1/dataprotectionapplication_types.go
  • bundle/manifests/oadp.openshift.io_dataprotectionapplications.yaml
  • config/crd/bases/oadp.openshift.io_dataprotectionapplications.yaml
  • internal/controller/velero.go
  • internal/controller/velero_test.go

Walkthrough

This PR inverts the CSI snapshot early frequent polling configuration from a "disable" to "enable" boolean semantic. The API type, CRD schemas, controller logic, and tests are updated consistently to reflect the new "enable by default" approach while maintaining the same underlying polling behavior (1-second intervals for the first 10 seconds while waiting for the snapshot handle).

Changes

CSI Snapshot Early Frequent Polling Feature

Layer / File(s) Summary
API type contract
api/v1alpha1/dataprotectionapplication_types.go
VeleroConfig field changes from DisableCSISnapshotEarlyFrequentPolling to EnableCSISnapshotEarlyFrequentPolling with updated documentation describing the 1-second polling behavior window.
CRD manifest schema
bundle/manifests/oadp.openshift.io_dataprotectionapplications.yaml, config/crd/bases/oadp.openshift.io_dataprotectionapplications.yaml
Both generated and base CRD schemas remove the disableCSISnapshotEarlyFrequentPolling field and add enableCSISnapshotEarlyFrequentPolling with corresponding schema documentation for the snapshot polling interval behavior.
Controller environment variable injection
internal/controller/velero.go
customizeVeleroContainer inverts the condition guarding CSI_SNAPSHOT_EARLY_FREQUENT_POLLING injection from a "disabled unless explicitly false" check to an explicit "enabled when true" boolean check.
Controller tests and fixtures
internal/controller/velero_test.go
baseEnvVars removes the default CSI_SNAPSHOT_EARLY_FREQUENT_POLLING env var, and new table-driven test cases validate both enabled and disabled scenarios for the inverted field.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

🚥 Pre-merge checks | ✅ 9 | ❌ 3

❌ Failed checks (2 warnings, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Microshift Test Compatibility ⚠️ Warning New e2e tests use MicroShift-incompatible APIs (operators.coreos.com, hypershift, kubevirt) without protection labels or skip checks. Add [Skipped:MicroShift] label or [apigroup:...] tag to e2e test names. HCP tests reference HostedCluster (hypershift), CatalogSource (operators.coreos.com); virt tests reference kubevirt.io, cdi.kubevirt.io.
Test Structure And Quality ❓ Inconclusive No result was produced after verification. Marking as INCONCLUSIVE. Re-run the check or adjust instructions to produce a final result.
✅ Passed checks (9 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately reflects the main behavioral change: switching from enabled-by-default to disabled-by-default for early frequent polling.
Description check ✅ Passed The description covers both required template sections with sufficient detail about why the changes were made and how to test them.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed All Ginkgo test names in velero_test.go are static and deterministic with no dynamic content like generated IDs, timestamps, UUIDs, node/namespace names, or IP addresses.
Single Node Openshift (Sno) Test Compatibility ✅ Passed No new Ginkgo e2e tests added. Modified files are types, CRD manifests, controller implementation, and standard unit tests only.
Topology-Aware Scheduling Compatibility ✅ Passed PR only changes feature flags (DisableCSISnapshotEarlyFrequentPolling → EnableCSISnapshotEarlyFrequentPolling) and environment variable logic. No topology-aware scheduling constraints are introduced.
Ote Binary Stdout Contract ✅ Passed This PR is for oadp-operator (a Kubernetes operator), not an OTE binary. The OTE stdout contract check does not apply to non-OTE repositories.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed The PR adds no new Ginkgo e2e tests. Changes only modify API types, CRD manifests, controller code, and unit tests in internal/controller/velero_test.go (not e2e tests). Check is not applicable.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label May 21, 2026
@openshift-ci
Copy link
Copy Markdown

openshift-ci Bot commented May 21, 2026

@sseago: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/5.0-e2e-test-aws eded1bc link true /test 5.0-e2e-test-aws
ci/prow/4.22-e2e-test-cli-aws eded1bc link true /test 4.22-e2e-test-cli-aws
ci/prow/4.22-e2e-test-aws eded1bc link true /test 4.22-e2e-test-aws

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant