Commit 3573a3e
Validate role against NodeRole when decoding ServersResponse
The wire-layer NodeInfo.role was a raw uint64 round-tripped without
validation — a misbehaving or tampered server could plant arbitrary
integers in the cluster-topology response and every downstream caller
had to remember to wrap with NodeRole(...). Tighten the type
annotation to NodeRole and raise DecodeError (chained from
ValueError) at the wire seam when the value is outside
{VOTER, STANDBY, SPARE}.
The error message lists the offending value and the valid set so the
failure is actionable in logs. NodeRole is an IntEnum subclass of int,
so encode output is byte-identical and downstream ``role == 0``
comparisons continue to work.
Three new tests pin the rejection path, the round-trip type, and the
int-equality guarantee.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 190de54 commit 3573a3e
2 files changed
Lines changed: 57 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| 10 | + | |
10 | 11 | | |
11 | 12 | | |
12 | 13 | | |
| |||
559 | 560 | | |
560 | 561 | | |
561 | 562 | | |
562 | | - | |
| 563 | + | |
563 | 564 | | |
564 | 565 | | |
565 | 566 | | |
| |||
603 | 604 | | |
604 | 605 | | |
605 | 606 | | |
606 | | - | |
| 607 | + | |
607 | 608 | | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
608 | 616 | | |
609 | 617 | | |
610 | 618 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1221 | 1221 | | |
1222 | 1222 | | |
1223 | 1223 | | |
| 1224 | + | |
| 1225 | + | |
| 1226 | + | |
| 1227 | + | |
| 1228 | + | |
| 1229 | + | |
| 1230 | + | |
| 1231 | + | |
| 1232 | + | |
| 1233 | + | |
| 1234 | + | |
| 1235 | + | |
| 1236 | + | |
| 1237 | + | |
| 1238 | + | |
| 1239 | + | |
| 1240 | + | |
| 1241 | + | |
| 1242 | + | |
| 1243 | + | |
| 1244 | + | |
| 1245 | + | |
| 1246 | + | |
| 1247 | + | |
| 1248 | + | |
| 1249 | + | |
| 1250 | + | |
| 1251 | + | |
| 1252 | + | |
| 1253 | + | |
| 1254 | + | |
| 1255 | + | |
| 1256 | + | |
| 1257 | + | |
| 1258 | + | |
| 1259 | + | |
| 1260 | + | |
| 1261 | + | |
| 1262 | + | |
| 1263 | + | |
| 1264 | + | |
| 1265 | + | |
| 1266 | + | |
| 1267 | + | |
| 1268 | + | |
| 1269 | + | |
| 1270 | + | |
1224 | 1271 | | |
1225 | 1272 | | |
1226 | 1273 | | |
| |||
0 commit comments