Commit e57066d
Fix JVM <clinit> deadlock using targeted bridge methods
Alternative approach to #48667 that avoids Class.forName() entirely.
Each getXxxAccessor() fallback now calls a targeted bridge method
(e.g., BridgeInternal.initializeCosmosAsyncClientAccessor()) that
directly invokes the specific class's initialize() method. This
eliminates classloader risks and is compile-time checked.
Adds per-class initialize methods to BridgeInternal (17),
ModelBridgeInternal (20), and UtilBridgeInternal (1).
Also includes:
- Missing static { initialize(); } blocks for 3 classes
- CosmosItemSerializer <clinit> ordering fix
- Renamed misnamed accessor in CosmosDiagnosticsThresholdsHelper
- Forked-JVM deadlock regression test (invocationCount=5, 12 threads)
- Behavioral enforcement test for static { initialize(); } blocks
Fixes: #48622
Fixes: #48585
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>1 parent 3a6b4a5 commit e57066d
14 files changed
Lines changed: 478 additions & 45 deletions
File tree
- sdk
- cosmos
- azure-cosmos-tests/src/test/java/com/azure/cosmos/implementation
- azure-cosmos
- src/main/java/com/azure/cosmos
- implementation
- models
- util
- spring/azure-spring-data-cosmos
Lines changed: 345 additions & 0 deletions
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
| 10 | + | |
| 11 | + | |
11 | 12 | | |
12 | 13 | | |
13 | 14 | | |
| |||
Lines changed: 35 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
625 | 625 | | |
626 | 626 | | |
627 | 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 | + | |
628 | 663 | | |
Lines changed: 2 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1201 | 1201 | | |
1202 | 1202 | | |
1203 | 1203 | | |
| 1204 | + | |
| 1205 | + | |
1204 | 1206 | | |
Lines changed: 3 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
33 | 36 | | |
34 | 37 | | |
35 | 38 | | |
| |||
163 | 166 | | |
164 | 167 | | |
165 | 168 | | |
166 | | - | |
167 | | - | |
168 | 169 | | |
Lines changed: 2 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
217 | 217 | | |
218 | 218 | | |
219 | 219 | | |
| 220 | + | |
| 221 | + | |
220 | 222 | | |
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
33 | | - | |
| 33 | + | |
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | | - | |
| 17 | + | |
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
| |||
0 commit comments