Skip to content

Commit 7706283

Browse files
committed
Reinitialize oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource at runtime
1 parent 505fc54 commit 7706283

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

extensions/jdbc/jdbc-oracle/deployment/src/main/java/io/quarkus/jdbc/oracle/deployment/OracleMetadataOverrides.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import io.quarkus.deployment.builditem.nativeimage.NativeImageAllowIncompleteClasspathBuildItem;
1010
import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
1111
import io.quarkus.deployment.builditem.nativeimage.RuntimeInitializedClassBuildItem;
12+
import io.quarkus.deployment.builditem.nativeimage.RuntimeReinitializedClassBuildItem;
1213
import io.quarkus.maven.dependency.ArtifactKey;
1314

1415
/**
@@ -66,7 +67,8 @@ void build(BuildProducer<ReflectiveClassBuildItem> reflectiveClass) {
6667
}
6768

6869
@BuildStep
69-
void runtimeInitializeDriver(BuildProducer<RuntimeInitializedClassBuildItem> runtimeInitialized) {
70+
void runtimeInitializeDriver(BuildProducer<RuntimeInitializedClassBuildItem> runtimeInitialized,
71+
BuildProducer<RuntimeReinitializedClassBuildItem> runtimeReinitialized) {
7072
//These re-implement all the "--initialize-at-build-time" arguments found in the native-image.properties :
7173

7274
// Override: the original metadata marks the drivers as "runtime initialized" but this makes it incompatible with
@@ -93,10 +95,14 @@ void runtimeInitializeDriver(BuildProducer<RuntimeInitializedClassBuildItem> run
9395
runtimeInitialized.produce(new RuntimeInitializedClassBuildItem("oracle.net.nt.TcpMultiplexer"));
9496
runtimeInitialized.produce(new RuntimeInitializedClassBuildItem("oracle.net.nt.TcpMultiplexer"));
9597
runtimeInitialized.produce(new RuntimeInitializedClassBuildItem("oracle.net.nt.TcpMultiplexer$LazyHolder"));
96-
runtimeInitialized
97-
.produce(new RuntimeInitializedClassBuildItem("oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource"));
98-
runtimeInitialized.produce(new RuntimeInitializedClassBuildItem(
98+
99+
// Needs to be REinitialized to avoid problems when also using the Elasticsearch Java client
100+
// See https://github.com/quarkusio/quarkus/issues/31624#issuecomment-1457706253
101+
runtimeReinitialized.produce(new RuntimeReinitializedClassBuildItem(
102+
"oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource"));
103+
runtimeReinitialized.produce(new RuntimeReinitializedClassBuildItem(
99104
"oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource$BlockReleaser"));
105+
100106
runtimeInitialized.produce(new RuntimeInitializedClassBuildItem("oracle.jdbc.xa.client.OracleXADataSource"));
101107
runtimeInitialized.produce(new RuntimeInitializedClassBuildItem("oracle.jdbc.replay.OracleXADataSourceImpl"));
102108
runtimeInitialized.produce(new RuntimeInitializedClassBuildItem("oracle.jdbc.datasource.OracleXAConnection"));

0 commit comments

Comments
 (0)