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

chideat / valkey-operator / 31065989368
24%

Build:
DEFAULT BRANCH: main
Ran 06 Aug 2026 02:36AM UTC
Jobs 1
Files 146
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 Aug 2026 02:34AM UTC coverage: 24.012% (+1.6%) from 22.384%
31065989368

push

github

web-flow
fix: controller fixes (slot guard, Pending-recovery, NodePort webhook, User phase key) (#101)

* fix(cluster): don't reassign slots a disconnected-but-intact shard owns

The engine judged shard master/slot presence via the IsJoined-gated accessors
shard.Master()/shard.Slots(), which return nil/empty when a node can't currently
see a peer. After a full restart a master that still locally owns its slots but
can't reach its peers was therefore treated as masterless/slotless, triggering
destructive EnsureSlots/Rebalance (ADDSLOTS, FAILOVER, SETSLOT) that created
epoch/slot conflicts and prevented reconvergence (risking split-brain).

Add ungated predicates (ShardAssignedSlots, ShardHasMaster, IsDisconnectedButIntact)
in internal/ops/cluster/predicate.go that judge ownership from the master node's
real local slots regardless of peer connectivity, and base the reassignment
decision on actual ownership: a disconnected-but-intact shard waits to re-MEET
instead of reassigning slots it already holds. Gated in engine check_4 and the
ensure_slots / join_node / rebalance actors.

Ported from redis-operator 7e6f6910 (RedisRole->NodeRole, type name adaptation).

* fix(cluster,failover): recover a Pending instance after a resource downscale

An instance created with oversized resources (all pods Pending) never recovered
after patching spec.resources down: with Pending pods the engine loops in
HealPod / HealMonitor and never reaches EnsureResource (the only actor that
updates the StatefulSet), so the desired resources never reach the template and
the pods stay Pending forever.

- cluster HealPod: always fall through to CommandEnsureResource, and delete
  stale-revision Pending pods so the StatefulSet recreates them from the updated
  template. valkey's cluster StatefulSet uses ParallelPodManagement + RollingUpdate,
  so the comment reflects that (not redis's OrderedReady premise).
- failover HealMonitor: return CommandEnsureResource instead of idle-waiting when
  no u... (continued)

90 of 154 new or added lines in 10 files covered. (58.44%)

48 existing lines in 3 files now uncovered.

4965 of 20677 relevant lines covered (24.01%)

0.28 hits per line

Uncovered Changes

Lines Coverage ∆ File
19
2.63
-0.4% internal/ops/cluster/actor/actor_heal_pod.go
12
26.13
-0.43% internal/ops/cluster/engine.go
7
2.63
-0.12% internal/ops/cluster/actor/actor_join_node.go
6
13.15
0.0% internal/controller/user_controller.go
5
94.96
-1.36% internal/webhook/rds/v1alpha1/valkey_webhook.go
4
0.0
0.0% api/v1alpha1/user_types.go
4
1.3
-0.02% internal/ops/cluster/actor/actor_ensure_slots.go
4
1.38
-0.03% internal/ops/cluster/actor/actor_rebalance.go
3
92.31
internal/ops/cluster/predicate.go

Coverage Regressions

Lines Coverage ∆ File
37
1.59
1.59% cmd/helper/sync/controller.go
9
20.66
12.33% internal/controller/failover_controller.go
2
28.35
28.35% internal/valkey/failover/monitor/manual_monitor.go
Jobs
ID Job ID Ran Files Coverage
1 31065989368.1 06 Aug 2026 02:36AM UTC 146
24.01
GitHub Action Run
Source Files on build 31065989368
  • Tree
  • List 146
  • Changed 19
  • Source Changed 0
  • Coverage Changed 19
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 406dbd55 on github
  • Prev Build on main (#29337488663)
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