Commit c383955
committed
Handle generation mismatch in servicing error recovery
When a user clears HFC/HFS specs to abort a failed servicing operation,
the BMH controller calls getHostFirmwareSettings/Components which check
that metadata.generation matches status.conditions.observedGeneration.
Since the HFS/HFC sub-controllers may not have reconciled yet after the
spec change, this generation mismatch returns an error that blocks the
abort path, leaving the host stuck in ServicingError with exponential
backoff.
Fix with two complementary changes:
1. Add a fast-path in doServiceIfNeeded: when in ServicingError state,
check specs directly via lightweight r.Get() calls (which don't
validate generation) before the generation-sensitive functions. If
specs are cleared, abort immediately via prov.Service() and clear
the error/operational status on success.
2. Watch HostFirmwareSettings and HostFirmwareComponents for generation
changes (spec modifications), mapping events to the corresponding
BMH. This ensures the BMH controller reconciles promptly when specs
change, rather than waiting for error-state exponential backoff.
Assisted-By: Claude Opus 4.6
(cherry picked from commit b235782)1 parent 0fa6833 commit c383955
1 file changed
Lines changed: 53 additions & 0 deletions
Lines changed: 53 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
| 49 | + | |
49 | 50 | | |
50 | 51 | | |
51 | 52 | | |
| |||
1460 | 1461 | | |
1461 | 1462 | | |
1462 | 1463 | | |
| 1464 | + | |
| 1465 | + | |
| 1466 | + | |
| 1467 | + | |
| 1468 | + | |
| 1469 | + | |
| 1470 | + | |
| 1471 | + | |
| 1472 | + | |
| 1473 | + | |
| 1474 | + | |
| 1475 | + | |
| 1476 | + | |
| 1477 | + | |
| 1478 | + | |
| 1479 | + | |
| 1480 | + | |
| 1481 | + | |
| 1482 | + | |
| 1483 | + | |
| 1484 | + | |
| 1485 | + | |
| 1486 | + | |
| 1487 | + | |
| 1488 | + | |
| 1489 | + | |
| 1490 | + | |
| 1491 | + | |
| 1492 | + | |
| 1493 | + | |
| 1494 | + | |
| 1495 | + | |
| 1496 | + | |
| 1497 | + | |
| 1498 | + | |
| 1499 | + | |
1463 | 1500 | | |
1464 | 1501 | | |
1465 | 1502 | | |
| |||
2501 | 2538 | | |
2502 | 2539 | | |
2503 | 2540 | | |
| 2541 | + | |
| 2542 | + | |
| 2543 | + | |
| 2544 | + | |
| 2545 | + | |
| 2546 | + | |
| 2547 | + | |
| 2548 | + | |
| 2549 | + | |
| 2550 | + | |
| 2551 | + | |
| 2552 | + | |
| 2553 | + | |
| 2554 | + | |
| 2555 | + | |
| 2556 | + | |
2504 | 2557 | | |
2505 | 2558 | | |
2506 | 2559 | | |
| |||
0 commit comments