Skip to content

Commit 6257655

Browse files
vlsijulianhyde
authored andcommitted
[CALCITE-1060] Fix test deadlock by initializing DriverManager before registering AlternatingDriver
Early DriverManager initialization is required to prevent Driver.<clinit> -> DriverManager.findServiceProviders -> Class.forName("Driver") deadlock. Note: proper resolution might need to add an entry for "AlternatingDriver" to the service manifest. Close apache#185
1 parent af77ec8 commit 6257655

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

avatica-server/src/test/java/org/apache/calcite/avatica/remote/AlternatingRemoteMetaTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ public class AlternatingRemoteMetaTest {
6868

6969
static {
7070
try {
71+
// Force DriverManager initialization before we hit AlternatingDriver->Driver.<clinit>
72+
// Otherwise Driver.<clinit> -> DriverManager.registerDriver -> scan service provider files
73+
// causes a deadlock; see [CALCITE-1060]
74+
DriverManager.getDrivers();
7175
DriverManager.registerDriver(new AlternatingDriver());
7276
} catch (SQLException e) {
7377
throw new RuntimeException(e);

0 commit comments

Comments
 (0)