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

NVIDIA / nodewright / 37529702502
83%

Build:
DEFAULT BRANCH: main
Ran 06 Oct 2026 09:11PM UTC
Jobs 1
Files 59
Run time 1min
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

06 Oct 2026 08:52PM UTC coverage: 83.127% (+0.1%) from 83.016%
37529702502

push

github

web-flow
fix(operator): leave an untaintable node out of the pass instead of stalling it (#705)

* fix(operator): apply runtime-required taints onto the live taint list

HandleAutoTaint and the reboot re-taint in TrackReboots both patched
spec.taints from the pass's cluster-state snapshot. Taints are an atomic
list, so each write replaced the whole list with the snapshot's copy plus
the runtime-required taint: a taint another controller added after the
snapshot (cluster-autoscaler, Karpenter, the cloud provider, GPU Operator)
was deleted, and one it removed was restored. New and rebooting nodes are
exactly when those controllers are busiest.

Both paths now go through addRuntimeRequiredTaint, which, like
removeRuntimeRequiredTaints, re-reads the node inside each conflict retry
and patches under an optimistic lock, so the taint is appended to the
current list. The reboot path applies the taint before the state reset
and leaves the reboot pending if either write fails, so both are retried
together. It now also records the autoTaint annotation, which is
idempotent for nodes that already carry it.

The heavy pass itself no longer changes taints: runtime-required removal
already re-reads in removeRuntimeRequiredTaints, so these were the
remaining writers.

Fixes #447

Signed-off-by: Alex Yuskauskas <ayuskauskas@nvidia.com>

* fix(operator): re-taint a rebooted node before resetting it, without a marker

The reboot re-taint wrote the autoTaint_<key> annotation, so a node
pre-tainted at provisioning gained a marker the operator never earned,
and a DNS-prefixed taint key (which Validate accepts) produced an invalid
annotation name that the apiserver rejects, leaving the reboot pending
and TrackReboots erroring on every pass. Only HandleAutoTaint marks a
node now; the reboot path relies on the marker surviving Reset, as
before.

The taint write also ran after Reset(), so a failure skipped the node
patch but still saved the wiped status. It now runs first: a failure
lea... (continued)

74 of 80 new or added lines in 3 files covered. (92.5%)

9947 of 11966 relevant lines covered (83.13%)

7.59 hits per line

Uncovered Changes

Lines Coverage ∆ File
4
66.1
-0.56% operator/internal/wrapper/compartment.go
2
83.9
0.62% operator/internal/controller/skyhook_controller.go
Jobs
ID Job ID Ran Files Coverage
1 37529702502.1 06 Oct 2026 09:11PM UTC 59
83.13
GitHub Action Run
Source Files on build 37529702502
  • Tree
  • List 59
  • Changed 3
  • Source Changed 3
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #37529702502
  • 1b9598ba on github
  • Prev Build on main (#37527108213)
  • Next Build on main (#37542638431)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc