Commit 2e2cd0b
committed
fix(bigtable): release session-creation budget on GO_AWAY during STARTING
A session that received a server GO_AWAY (or was force-closed) while still
STARTING transitions STARTING -> CLOSING -> WAIT_SERVER_CLOSE and closes with
prevState == WAIT_SERVER_CLOSE. The only failure-side budget release in
onSessionClose lived inside the abnormal-close branch
(if prevState != WAIT_SERVER_CLOSE), guarded by prevState == STARTING, so that
path was skipped and the reserved concurrency slot leaked permanently. Over time
this exhausts the session-creation budget even at very low QPS.
Track each reservation on the SessionHandle and release it exactly once: as a
success when the session reaches READY (onSessionReady), or as a failure when it
terminates without ever becoming READY (onSessionClose), before the pool-state
and abnormal-close gates. Keying off the reservation instead of the close-time
prevState makes the release exactly-once and also covers the latent leak where
onSessionReady early-returns (poolState != STARTED) without releasing.
Adds a regression test that drives a session receiving a GO_AWAY before the open
handshake, backed by a new go_away_before_open fake-proto field and matching
SessionHandler branch. The test fails without the fix and passes with it.1 parent d9c4df6 commit 2e2cd0b
4 files changed
Lines changed: 158 additions & 4 deletions
File tree
- java-bigtable/google-cloud-bigtable/src
- main/java/com/google/cloud/bigtable/data/v2/internal/session
- test
- java/com/google/cloud/bigtable/data/v2/internal/session
- fake
- proto/google/bigtable/v2
Lines changed: 33 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
154 | 154 | | |
155 | 155 | | |
156 | 156 | | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
157 | 169 | | |
158 | 170 | | |
159 | 171 | | |
| |||
424 | 436 | | |
425 | 437 | | |
426 | 438 | | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
427 | 442 | | |
428 | 443 | | |
429 | 444 | | |
| |||
498 | 513 | | |
499 | 514 | | |
500 | 515 | | |
501 | | - | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
502 | 521 | | |
503 | 522 | | |
504 | 523 | | |
| |||
558 | 577 | | |
559 | 578 | | |
560 | 579 | | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
561 | 591 | | |
562 | 592 | | |
563 | 593 | | |
| |||
582 | 612 | | |
583 | 613 | | |
584 | 614 | | |
585 | | - | |
586 | | - | |
587 | | - | |
| 615 | + | |
| 616 | + | |
588 | 617 | | |
589 | 618 | | |
590 | 619 | | |
| |||
Lines changed: 102 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
612 | 612 | | |
613 | 613 | | |
614 | 614 | | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
| 639 | + | |
| 640 | + | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
| 657 | + | |
| 658 | + | |
| 659 | + | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
| 690 | + | |
| 691 | + | |
| 692 | + | |
| 693 | + | |
| 694 | + | |
| 695 | + | |
| 696 | + | |
| 697 | + | |
| 698 | + | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
| 702 | + | |
| 703 | + | |
| 704 | + | |
| 705 | + | |
| 706 | + | |
| 707 | + | |
| 708 | + | |
| 709 | + | |
| 710 | + | |
| 711 | + | |
| 712 | + | |
| 713 | + | |
| 714 | + | |
| 715 | + | |
| 716 | + | |
615 | 717 | | |
616 | 718 | | |
617 | 719 | | |
| |||
Lines changed: 17 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
141 | 141 | | |
142 | 142 | | |
143 | 143 | | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
144 | 161 | | |
145 | 162 | | |
146 | 163 | | |
| |||
Lines changed: 6 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
40 | 46 | | |
41 | 47 | | |
42 | 48 | | |
| |||
0 commit comments