Commit 5dd2a85
authored
feat(grpc): add exponential backoff for reconnection attempts (#789)
* feat(grpc): add exponential backoff for reconnection attempts
Assisted-by: claude-opus-4-6@default <noreply@opencode.ai>
* feat(config): make backoff initial/max configurable via YAML, CLI, and env vars
Add BackoffConfig to GrpcConfig with YAML (grpc.backoff.initial,
grpc.backoff.max), CLI (--backoff-initial, --backoff-max), and env var
(FACT_GRPC_BACKOFF_INITIAL, FACT_GRPC_BACKOFF_MAX) support.
Extract yaml_to_duration_secs and parse_duration_secs helpers, reusing
them for scan_interval parsing as well.
Assisted-by: claude-opus-4-6@default <noreply@opencode.ai>
* cleanup(grpc): simplify Backoff creation
* chore: add changelog line
* feat(grpc): add full jitter to backoff reconnection
Add configurable jitter to the exponential backoff using rand crate
for uniform distribution over [0, delay]. Jitter is enabled by default
and can be toggled via YAML (grpc.backoff.jitter), CLI (--backoff-jitter
/ --no-backoff-jitter), or env var (FACT_GRPC_NO_BACKOFF_JITTER).
Assisted-by: claude-opus-4-6@default <noreply@opencode.ai>
* feat(config): make backoff multiplier configurable
Add multiplier field to BackoffConfig (default 1.5x). Configurable via
YAML (grpc.backoff.multiplier), CLI (--backoff-multiplier), and env var
(FACT_GRPC_BACKOFF_MULTIPLIER). Must be > 1.0.
Drops Eq derive from config types in favor of PartialEq to support
storing multiplier as f64 directly.
Assisted-by: claude-opus-4-6@default <noreply@opencode.ai>
* cleanup: refactor some code for consistency and simplicity
* cleanup: add warning when initial backoff is greater than max
* cleanup: add _DURATION suffix to max and initial backoff fields
* fix: first delay must not be larger than max
We also simplify the calculation of the next value.1 parent 887ffde commit 5dd2a85
7 files changed
Lines changed: 946 additions & 28 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
| 9 | + | |
9 | 10 | | |
10 | 11 | | |
11 | 12 | | |
| |||
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
| 33 | + | |
33 | 34 | | |
34 | 35 | | |
35 | 36 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
| 31 | + | |
31 | 32 | | |
32 | 33 | | |
33 | 34 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
26 | | - | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
27 | 34 | | |
28 | 35 | | |
29 | 36 | | |
| |||
218 | 225 | | |
219 | 226 | | |
220 | 227 | | |
221 | | - | |
222 | | - | |
223 | | - | |
224 | | - | |
225 | | - | |
226 | | - | |
227 | | - | |
228 | | - | |
229 | | - | |
230 | | - | |
231 | | - | |
232 | | - | |
233 | | - | |
234 | | - | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
235 | 233 | | |
236 | 234 | | |
237 | 235 | | |
| |||
328 | 326 | | |
329 | 327 | | |
330 | 328 | | |
331 | | - | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 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 | + | |
332 | 416 | | |
333 | 417 | | |
334 | 418 | | |
| 419 | + | |
335 | 420 | | |
336 | 421 | | |
337 | 422 | | |
| |||
343 | 428 | | |
344 | 429 | | |
345 | 430 | | |
| 431 | + | |
| 432 | + | |
346 | 433 | | |
347 | 434 | | |
348 | 435 | | |
| |||
377 | 464 | | |
378 | 465 | | |
379 | 466 | | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
380 | 473 | | |
381 | 474 | | |
382 | 475 | | |
| |||
450 | 543 | | |
451 | 544 | | |
452 | 545 | | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
453 | 570 | | |
454 | 571 | | |
455 | 572 | | |
| |||
465 | 582 | | |
466 | 583 | | |
467 | 584 | | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
468 | 609 | | |
469 | 610 | | |
470 | 611 | | |
| |||
535 | 676 | | |
536 | 677 | | |
537 | 678 | | |
538 | | - | |
539 | | - | |
| 679 | + | |
| 680 | + | |
540 | 681 | | |
541 | 682 | | |
542 | 683 | | |
| |||
555 | 696 | | |
556 | 697 | | |
557 | 698 | | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
| 702 | + | |
| 703 | + | |
| 704 | + | |
558 | 705 | | |
559 | 706 | | |
560 | 707 | | |
| |||
568 | 715 | | |
569 | 716 | | |
570 | 717 | | |
571 | | - | |
| 718 | + | |
572 | 719 | | |
573 | 720 | | |
574 | 721 | | |
| |||
0 commit comments