• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

SchSeba / sriov-network-operator-1
63%
master: 64%

Build:
Build:
LAST BUILD BRANCH: devtask-d6444829-add-corerabbit-yaml-configuration-for-th
DEFAULT BRANCH: master
Repo Added 27 Jul 2022 12:48PM UTC
Token MCzExkrUqCmca7JovFWU5quDblYDZ2Jzk regen
Build 803 Last
Files 108
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH fix_drain_issue
branch: fix_drain_issue
CHANGE BRANCH
x
Reset
Sync Branches
  • fix_drain_issue
  • add_device_injector_validation
  • add_hugepages_func_test
  • add_logs
  • add_mtu_func_test
  • add_predicate_for_nodes
  • add_rbac_to_nri
  • add_rdma_documentation
  • add_resync
  • add_retry_on_delete
  • allow_to_remove_default_pool
  • block_resource_injector
  • bug_remove_nic_config_from_host
  • bump-dependencies-pr1027
  • bump_cni_version
  • bump_controller_runtime_0.20.2
  • bump_ginkgo_version
  • bump_k8s_1.30
  • bump_k8s_version_ci
  • bump_kube-rbac-proxy_v0.21.2
  • bump_mock_package
  • bump_ocp_version_4.18
  • bumps_1.24
  • change_vlan_max
  • check_MCP_after_pod_restart
  • check_lock_down_on_mlx_plugin
  • ci_improvements
  • clean_ci_images
  • conditions/github-action-update
  • conditions/network-crds
  • conditions/nodestate
  • conditions/operator-config
  • conditions/operator-config-v2
  • conditions/policy-poolconfig
  • conditions/redeploy-script-fix
  • create_desing_proposal_template
  • create_platform_and_orchestrator_packages
  • daemon_redesign
  • design_conditions
  • design_conditions_implementation
  • design_externally_manage
  • device_plugin_redesign
  • devtask-d6444829-add-corerabbit-yaml-configuration-for-th
  • documentation-re-org
  • documentation_update
  • drain-controller-test-fix
  • drain_controller
  • drain_daemon
  • drain_improve
  • enable_delve
  • enable_feature_gate
  • enable_mtu_test
  • extend_time
  • externally_manage
  • externally_manage_tests
  • fast-leader-election
  • fix-webhook-image-user
  • fix_aws_test
  • fix_device_plugin_label
  • fix_drain_handler
  • fix_drain_issue_v2
  • fix_empty_nodeselector_in_policy
  • fix_githubaction_artifact
  • fix_ip_link_command_tests
  • fix_k8s_ci
  • fix_k8s_ci_multus
  • fix_k8s_ci_virtual_cluster
  • fix_k8s_ci_virtual_cluster_1
  • fix_lock_race
  • fix_log_test
  • fix_matchcondition
  • fix_mlx_plugin
  • fix_mlx_plugin_1
  • fix_mtu_disconnected_test
  • fix_mtu_test_1
  • fix_ocp_ci
  • fix_ocp_ci_login
  • fix_policy_order
  • fix_race_condition
  • fix_rdma_test
  • fix_render
  • fix_return_error
  • fix_root_device_overlap
  • fix_sriov_test_for_sno
  • fix_status_patch
  • fix_test
  • fix_unittest
  • fix_virtual_cluster_script
  • fix_waiting_for_dp_when_no_policy
  • fix_webhook
  • func_e2e_fixes
  • improve_drain_check
  • improve_hypershift_check
  • improve_logs
  • improve_nic_selection
  • install_kmod_for_mstfwreset
  • interface_redesign
  • master
  • move_systemd_to_host_package
  • multiple_bumps
  • ocpbugs-64886
  • parallel_drain
  • parallel_drain_design
  • platform_and_orchestrator_packages_design
  • rdma-functest
  • rdma-subsytem-mode
  • readd_altname_docs
  • reduce_rbac_resource_injector
  • refs/pull/3/merge
  • remove_DP_from_nodestate_spec
  • remove_client
  • remove_drain_on_none_vfs
  • remove_leader_election
  • remove_leader_election_test
  • remove_timeout
  • run_make_bundle
  • security_improvements
  • skip_drain_on_reboot
  • skip_drain_on_reboot_single_node
  • skip_virtual_nic_udev
  • support_BF2_connectx
  • support_PSA
  • support_aws
  • support_ib_netlink
  • support_k8s_cluster_version
  • support_post_quantum
  • support_vfio_ib_in_webhook
  • support_virtual_cluster
  • sync-2025-02-03
  • systemd
  • temp_fix_ocp_ci
  • test-separate-daemon-drain-fixes
  • unit_test_no_mock
  • unit_tests
  • unit_tests_1
  • update_bundle_to_stable
  • update_ci_system
  • update_github_actions
  • update_ocp_ci_version
  • use_context_to_annotate
  • virtual_webhook

01 Jun 2026 01:22PM UTC coverage: 63.473% (+0.03%) from 63.443%
26826204253

push

github

SchSeba
Fix drain escalation race that could reboot node without full drain

A race condition existed where a node could be rebooted with production
workloads still running. The scenario:

1. Daemon requests Drain_Required (partial drain - only SR-IOV pods evicted)
2. Drain controller performs partial drain and sets DrainComplete
3. Meanwhile, a new policy requiring reboot (e.g. RDMA mode change) arrives
4. Daemon sees DrainComplete and proceeds to reboot without a full drain

The root cause is that the daemon could not distinguish whether the
completed drain was sufficient for its current (escalated) requirements.

Fix: introduce a new annotation `sriovnetwork.openshift.io/drain-action`
on SriovNetworkNodeState, owned by the drain controller, that records the
drain type actually performed. The daemon verifies this matches its current
need before proceeding to apply configuration or reboot.

The drain controller:
- Sets drain-action when starting a drain (atomically with current-state)
- Re-reads desired-state after drain completes to detect mid-drain escalation
- Resets to Draining and re-drains if desired-state escalated beyond drain-action
- Clears drain-action when returning to Idle

The daemon:
- Checks drain-action satisfies its requirement at DrainComplete
- Escalates desired-state during Draining if reboot becomes needed
- Never proceeds to apply/reboot if drain-action is insufficient

Also adds DrainStateAnnotationPredicate watch on desired-state changes and
AnnotateObjectMultiple utility to batch annotation writes in a single API call.

Signed-off-by: Sebastian Sch <sebassch@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: Sebastian Sch <sebassch@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>

128 of 174 new or added lines in 6 files covered. (73.56%)

24 existing lines in 5 files now uncovered.

9561 of 15063 relevant lines covered (63.47%)

0.71 hits per line

Relevant lines Covered
Build:
Build:
15063 RELEVANT LINES 9561 COVERED LINES
0.71 HITS PER LINE
Source Files on fix_drain_issue
  • Tree
  • List 108
  • Changed 8
  • Source Changed 6
  • Coverage Changed 8
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
26826204253 fix_drain_issue Fix drain escalation race that could reboot node without full drain A race condition existed where a node could be rebooted with production workloads still running. The scenario: 1. Daemon requests Drain_Required (partial drain - only SR-IOV pod... push 02 Jun 2026 02:35PM UTC SchSeba github
63.47
26745654512 fix_drain_issue Fix drain escalation race that could reboot node without full drain A race condition existed where a node could be rebooted with production workloads still running. The scenario: 1. Daemon requests Drain_Required (partial drain - only SR-IOV pod... push 01 Jun 2026 09:18AM UTC SchSeba github
63.35
26741474555 fix_drain_issue Fix drain escalation race that could reboot node without full drain A race condition existed where a node could be rebooted with production workloads still running. The scenario: 1. Daemon requests Drain_Required (partial drain - only SR-IOV pod... push 01 Jun 2026 07:45AM UTC SchSeba github
63.57
26741408493 fix_drain_issue Fix drain escalation race that could reboot node without full drain A race condition existed where a node could be rebooted with production workloads still running. The scenario: 1. Daemon requests Drain_Required (partial drain - only SR-IOV pod... push 01 Jun 2026 07:43AM UTC SchSeba github
63.4
See All Builds (691)

Badge your Repo: sriov-network-operator-1

We detected this repo isn’t badged! Grab the embed code to the right, add it to your repo to show off your code coverage, and when the badge is live hit the refresh button to remove this message.

Could not find badge in README.

Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

Refresh
  • Settings
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc