Commit d4923dd
authored
CLOUDP-400938: fix(atlasdeployment): stop perpetual reconcile loop on terminationProtection and processArgs (#3334)
* fix(deployment): always send terminationProtectionEnabled in PATCH
MakePtrOrNil dropped false from the create/update body. When Atlas had
true (e.g. set via UI), the operator could never push false, causing a
perpetual reconcile loop.
Refs #3142
* feat(deployment): add ProcessArgsEqual comparator
Mirrors PATCH-body omitempty semantics: AKO-side zero values are treated
as "no opinion" and skipped in the comparison. Will replace the
reflect.DeepEqual call at the reconcile site in a follow-up commit.
Refs #3142
* fix(atlasdeployment): use ProcessArgsEqual instead of reflect.DeepEqual
reflect.DeepEqual treated Atlas-returned server defaults as a diff
against CR-unset fields, triggering UpdateProcessArgs every reconcile.
The PATCH body omits the same zero values, so Atlas never converged.
Refs #3142
* fix(deployment): preserve explicit zero on *int64 processArgs fields
OplogSizeMB / SampleSizeBIConnector / SampleRefreshIntervalBIConnector
went through MakePtrOrNil(int(GetOrDefault(*int64, 0))), which collapsed
both 'unset' and 'explicitly zero' into nil — the same bug class as
terminationProtectionEnabled. Replaced with a nil-preserving helper so
*int64(0) survives the PATCH conversion and the comparator can drive
convergence in one round.
Per review feedback on PR #3334. Refs #3142.
* docs(deployment): explain ProcessArgsEqual per-field check rationale
Per review feedback on PR #3334.
* fix(deployment): keep pause-only PATCHes free of other fields
Switching TerminationProtectionEnabled to MakePtr (issue #3142) broke the
implicit contract of the pause special-case in ComputeChanges: that path
had relied on MakePtrOrNil silently dropping zero-value fields so the
PATCH body contained only Paused. Adding TerminationProtectionEnabled as
an explicit value caused Atlas to reject the request with HTTP 409
CANNOT_UPDATE_AND_PAUSE_CLUSTER, surfacing as a 30-minute timeout in the
'Should Succeed (AWS)' integration test.
Make the contract explicit: ComputeChanges marks pause-only changes with
a pauseOnly flag, and clusterUpdateToAtlas builds a body containing only
Paused when set.
Refs #31421 parent 82fe0f0 commit d4923dd
5 files changed
Lines changed: 351 additions & 7 deletions
File tree
- internal
- controller/atlasdeployment
- translation/deployment
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
20 | | - | |
21 | 20 | | |
22 | 21 | | |
23 | 22 | | |
| |||
245 | 244 | | |
246 | 245 | | |
247 | 246 | | |
248 | | - | |
| 247 | + | |
249 | 248 | | |
250 | 249 | | |
251 | 250 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
| 34 | + | |
34 | 35 | | |
35 | 36 | | |
36 | 37 | | |
| |||
388 | 389 | | |
389 | 390 | | |
390 | 391 | | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| 25 | + | |
25 | 26 | | |
26 | 27 | | |
27 | 28 | | |
| |||
56 | 57 | | |
57 | 58 | | |
58 | 59 | | |
| 60 | + | |
59 | 61 | | |
60 | 62 | | |
61 | 63 | | |
| |||
2413 | 2415 | | |
2414 | 2416 | | |
2415 | 2417 | | |
| 2418 | + | |
| 2419 | + | |
| 2420 | + | |
| 2421 | + | |
| 2422 | + | |
| 2423 | + | |
| 2424 | + | |
| 2425 | + | |
| 2426 | + | |
| 2427 | + | |
| 2428 | + | |
| 2429 | + | |
| 2430 | + | |
| 2431 | + | |
| 2432 | + | |
| 2433 | + | |
| 2434 | + | |
| 2435 | + | |
| 2436 | + | |
| 2437 | + | |
| 2438 | + | |
| 2439 | + | |
| 2440 | + | |
| 2441 | + | |
| 2442 | + | |
| 2443 | + | |
| 2444 | + | |
| 2445 | + | |
| 2446 | + | |
| 2447 | + | |
| 2448 | + | |
| 2449 | + | |
| 2450 | + | |
| 2451 | + | |
| 2452 | + | |
| 2453 | + | |
| 2454 | + | |
| 2455 | + | |
| 2456 | + | |
| 2457 | + | |
| 2458 | + | |
| 2459 | + | |
| 2460 | + | |
| 2461 | + | |
| 2462 | + | |
| 2463 | + | |
| 2464 | + | |
| 2465 | + | |
| 2466 | + | |
| 2467 | + | |
| 2468 | + | |
| 2469 | + | |
| 2470 | + | |
| 2471 | + | |
| 2472 | + | |
| 2473 | + | |
| 2474 | + | |
| 2475 | + | |
| 2476 | + | |
| 2477 | + | |
| 2478 | + | |
| 2479 | + | |
| 2480 | + | |
| 2481 | + | |
| 2482 | + | |
| 2483 | + | |
| 2484 | + | |
| 2485 | + | |
| 2486 | + | |
| 2487 | + | |
| 2488 | + | |
| 2489 | + | |
| 2490 | + | |
| 2491 | + | |
| 2492 | + | |
| 2493 | + | |
| 2494 | + | |
| 2495 | + | |
| 2496 | + | |
| 2497 | + | |
| 2498 | + | |
| 2499 | + | |
| 2500 | + | |
| 2501 | + | |
| 2502 | + | |
| 2503 | + | |
| 2504 | + | |
| 2505 | + | |
| 2506 | + | |
| 2507 | + | |
| 2508 | + | |
| 2509 | + | |
| 2510 | + | |
| 2511 | + | |
| 2512 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
65 | 71 | | |
66 | 72 | | |
67 | 73 | | |
| |||
583 | 589 | | |
584 | 590 | | |
585 | 591 | | |
586 | | - | |
| 592 | + | |
587 | 593 | | |
588 | 594 | | |
589 | 595 | | |
590 | 596 | | |
591 | 597 | | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
592 | 605 | | |
593 | 606 | | |
594 | 607 | | |
| |||
602 | 615 | | |
603 | 616 | | |
604 | 617 | | |
605 | | - | |
| 618 | + | |
606 | 619 | | |
607 | 620 | | |
608 | 621 | | |
| |||
950 | 963 | | |
951 | 964 | | |
952 | 965 | | |
| 966 | + | |
| 967 | + | |
| 968 | + | |
| 969 | + | |
| 970 | + | |
| 971 | + | |
| 972 | + | |
| 973 | + | |
| 974 | + | |
| 975 | + | |
| 976 | + | |
| 977 | + | |
| 978 | + | |
| 979 | + | |
| 980 | + | |
| 981 | + | |
953 | 982 | | |
954 | 983 | | |
955 | 984 | | |
| |||
966 | 995 | | |
967 | 996 | | |
968 | 997 | | |
969 | | - | |
970 | | - | |
971 | | - | |
| 998 | + | |
| 999 | + | |
| 1000 | + | |
972 | 1001 | | |
973 | 1002 | | |
974 | 1003 | | |
| |||
0 commit comments