Skip to content

Commit cb8572d

Browse files
authored
Support connecting to HiveServer2 with ZooKeeper Service Discovery enabled in GraalVM Native Image (#13)
1 parent 4d7eebf commit cb8572d

File tree

14 files changed

+2280
-36
lines changed

14 files changed

+2280
-36
lines changed

doc/CHANGELOG.md

+11
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,17 @@
22

33
## v1
44

5+
### 1.6.0-SNAPSHOT
6+
7+
1. Support connecting to HiveServer2 with ZooKeeper Service Discovery enabled in GraalVM Native Image.
8+
9+
Build from `apache/hive:rel/release-4.0.1`.
10+
11+
```
12+
io.github.linghengqian:hive-server2-jdbc-driver-thin:1.6.0-SNAPSHOT
13+
io.github.linghengqian:hive-server2-jdbc-driver-uber:1.6.0-SNAPSHOT
14+
```
15+
516
### 1.5.0
617

718
1. Bump base HiveServer2 JDBC Driver version to `4.0.1`.

hive-server2-jdbc-driver-thin/src/main/resources/META-INF/native-image/com.github.docker-java/docker-java-api/3.4.0/reflect-config.json

+671-2
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"resources":{
3+
"includes":[{
4+
"condition":{"typeReachable":"org.apache.calcite.avatica.remote.Driver"},
5+
"pattern":"\\Qorg-apache-calcite-jdbc.properties\\E"
6+
}]},
7+
"bundles":[]
8+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
[
2+
{
3+
"condition":{"typeReachable":"org.apache.zookeeper.ZooKeeper"},
4+
"name":"org.apache.zookeeper.ClientCnxnSocketNIO",
5+
"methods":[{"name":"<init>","parameterTypes":["org.apache.zookeeper.client.ZKClientConfig"] }]
6+
},
7+
{
8+
"condition":{"typeReachable":"org.apache.zookeeper.metrics.impl.MetricsProviderBootstrap"},
9+
"name":"org.apache.zookeeper.metrics.impl.DefaultMetricsProvider",
10+
"methods":[{"name":"<init>","parameterTypes":[] }]
11+
},
12+
{
13+
"condition":{"typeReachable":"org.apache.zookeeper.server.quorum.QuorumPeerConfig"},
14+
"name":"org.apache.zookeeper.metrics.impl.DefaultMetricsProvider"
15+
},
16+
{
17+
"condition":{"typeReachable":"org.apache.zookeeper.server.ServerCnxnFactory"},
18+
"name":"org.apache.zookeeper.server.ConnectionBean",
19+
"queryAllPublicConstructors":true
20+
},
21+
{
22+
"condition":{"typeReachable":"org.apache.zookeeper.server.ServerCnxnFactory"},
23+
"name":"org.apache.zookeeper.server.ConnectionMXBean",
24+
"queryAllPublicMethods":true
25+
},
26+
{
27+
"condition":{"typeReachable":"org.apache.zookeeper.server.ZooKeeperServer"},
28+
"name":"org.apache.zookeeper.server.DataTreeBean",
29+
"queryAllPublicConstructors":true
30+
},
31+
{
32+
"condition":{"typeReachable":"org.apache.zookeeper.server.ZooKeeperServer"},
33+
"name":"org.apache.zookeeper.server.DataTreeMXBean",
34+
"queryAllPublicMethods":true
35+
},
36+
{
37+
"condition":{"typeReachable":"org.apache.zookeeper.server.ServerCnxnFactory"},
38+
"name":"org.apache.zookeeper.server.NIOServerCnxnFactory",
39+
"methods":[{"name":"<init>","parameterTypes":[] }]
40+
},
41+
{
42+
"condition":{"typeReachable":"org.apache.zookeeper.server.ZooKeeperServer"},
43+
"name":"org.apache.zookeeper.server.ZooKeeperServerBean",
44+
"queryAllPublicConstructors":true
45+
},
46+
{
47+
"condition":{"typeReachable":"org.apache.zookeeper.server.ZooKeeperServer"},
48+
"name":"org.apache.zookeeper.server.ZooKeeperServerMXBean",
49+
"queryAllPublicMethods":true
50+
},
51+
{
52+
"condition":{"typeReachable":"org.apache.zookeeper.server.watch.WatchManagerFactory"},
53+
"name":"org.apache.zookeeper.server.watch.WatchManager",
54+
"methods":[{"name":"<init>","parameterTypes":[] }]
55+
}
56+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,195 @@
1+
[
2+
{
3+
"condition":{"typeReachable":"org.testcontainers.shaded.com.fasterxml.jackson.databind.util.ArrayBuilders"},
4+
"name":"[Lorg.testcontainers.shaded.com.fasterxml.jackson.databind.deser.BeanDeserializerModifier;"
5+
},
6+
{
7+
"condition":{"typeReachable":"org.testcontainers.jdbc.ContainerDatabaseDriver"},
8+
"name":"org.testcontainers.containers.ClickHouseProvider"
9+
},
10+
{
11+
"condition":{"typeReachable":"org.testcontainers.jdbc.ContainerDatabaseDriver"},
12+
"name":"org.testcontainers.containers.MSSQLServerContainerProvider"
13+
},
14+
{
15+
"condition":{"typeReachable":"org.testcontainers.jdbc.ContainerDatabaseDriver"},
16+
"name":"org.testcontainers.containers.PgVectorContainerProvider"
17+
},
18+
{
19+
"condition":{"typeReachable":"org.testcontainers.jdbc.ContainerDatabaseDriver"},
20+
"name":"org.testcontainers.containers.PostgisContainerProvider"
21+
},
22+
{
23+
"condition":{"typeReachable":"org.testcontainers.jdbc.ContainerDatabaseDriver"},
24+
"name":"org.testcontainers.containers.PostgreSQLContainerProvider"
25+
},
26+
{
27+
"condition":{"typeReachable":"org.testcontainers.jdbc.ContainerDatabaseDriver"},
28+
"name":"org.testcontainers.containers.TimescaleDBContainerProvider"
29+
},
30+
{
31+
"condition":{"typeReachable":"org.testcontainers.DockerClientFactory"},
32+
"name":"org.testcontainers.dockerclient.DockerDesktopClientProviderStrategy"
33+
},
34+
{
35+
"condition":{"typeReachable":"org.testcontainers.DockerClientFactory"},
36+
"name":"org.testcontainers.dockerclient.DockerMachineClientProviderStrategy"
37+
},
38+
{
39+
"condition":{"typeReachable":"org.testcontainers.DockerClientFactory"},
40+
"name":"org.testcontainers.dockerclient.EnvironmentAndSystemPropertyClientProviderStrategy"
41+
},
42+
{
43+
"condition":{"typeReachable":"org.testcontainers.DockerClientFactory"},
44+
"name":"org.testcontainers.dockerclient.NpipeSocketClientProviderStrategy"
45+
},
46+
{
47+
"condition":{"typeReachable":"org.testcontainers.DockerClientFactory"},
48+
"name":"org.testcontainers.dockerclient.RootlessDockerClientProviderStrategy"
49+
},
50+
{
51+
"condition":{"typeReachable":"org.testcontainers.DockerClientFactory"},
52+
"name":"org.testcontainers.dockerclient.TestcontainersHostPropertyClientProviderStrategy"
53+
},
54+
{
55+
"condition":{"typeReachable":"org.testcontainers.DockerClientFactory"},
56+
"name":"org.testcontainers.dockerclient.UnixSocketClientProviderStrategy"
57+
},
58+
{
59+
"condition":{"typeReachable":"org.testcontainers.dockerclient.DockerClientProviderStrategy"},
60+
"name":"org.testcontainers.dockerclient.UnixSocketClientProviderStrategy",
61+
"methods":[{"name":"<init>","parameterTypes":[] }]
62+
},
63+
{
64+
"condition":{"typeReachable":"org.testcontainers.shaded.com.fasterxml.jackson.databind.ext.Java7Support"},
65+
"name":"org.testcontainers.shaded.com.fasterxml.jackson.databind.ext.Java7SupportImpl",
66+
"methods":[{"name":"<init>","parameterTypes":[] }]
67+
},
68+
{
69+
"condition":{"typeReachable":"org.testcontainers.dockerclient.DockerClientProviderStrategy"},
70+
"name":"org.testcontainers.shaded.com.github.dockerjava.core.DockerConfigFile",
71+
"queryAllDeclaredMethods":true,
72+
"queryAllDeclaredConstructors":true
73+
},
74+
{
75+
"condition":{"typeReachable":"org.testcontainers.dockerclient.EnvironmentAndSystemPropertyClientProviderStrategy"},
76+
"name":"org.testcontainers.shaded.com.github.dockerjava.core.DockerConfigFile"
77+
},
78+
{
79+
"condition":{"typeReachable":"org.testcontainers.shaded.com.fasterxml.jackson.databind.ObjectMapper"},
80+
"name":"org.testcontainers.shaded.com.github.dockerjava.core.DockerConfigFile",
81+
"allDeclaredFields":true,
82+
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"setAuths","parameterTypes":["java.util.Map"] }]
83+
},
84+
{
85+
"condition":{"typeReachable":"org.testcontainers.shaded.com.github.dockerjava.core.DefaultDockerClientConfig$Builder"},
86+
"name":"org.testcontainers.shaded.com.github.dockerjava.core.DockerConfigFile"
87+
},
88+
{
89+
"condition":{"typeReachable":"org.testcontainers.shaded.com.github.dockerjava.core.DockerConfigFile"},
90+
"name":"org.testcontainers.shaded.com.github.dockerjava.core.DockerConfigFile"
91+
},
92+
{
93+
"condition":{"typeReachable":"org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder"},
94+
"name":"org.testcontainers.shaded.com.github.dockerjava.core.command.AbstrAsyncDockerCmd",
95+
"queryAllDeclaredMethods":true,
96+
"allDeclaredFields": true
97+
},
98+
{
99+
"condition":{"typeReachable":"org.testcontainers.shaded.com.github.dockerjava.core.exec.CreateNetworkCmdExec"},
100+
"name":"org.testcontainers.shaded.com.github.dockerjava.core.command.AbstrDockerCmd",
101+
"queryAllDeclaredMethods":true,
102+
"allDeclaredFields": true
103+
},
104+
{
105+
"condition":{"typeReachable":"org.testcontainers.shaded.com.github.dockerjava.core.exec.ExecCreateCmdExec"},
106+
"name":"org.testcontainers.shaded.com.github.dockerjava.core.command.AbstrDockerCmd",
107+
"queryAllDeclaredMethods":true
108+
},
109+
{
110+
"condition":{"typeReachable":"org.testcontainers.shaded.com.github.dockerjava.core.exec.CreateNetworkCmdExec"},
111+
"name":"org.testcontainers.shaded.com.github.dockerjava.core.command.CreateNetworkCmdImpl",
112+
"allDeclaredFields":true,
113+
"queryAllDeclaredMethods":true,
114+
"queryAllDeclaredConstructors":true,
115+
"methods":[{"name":"getAttachable","parameterTypes":[] }, {"name":"getCheckDuplicate","parameterTypes":[] }, {"name":"getDriver","parameterTypes":[] }, {"name":"getEnableIPv6","parameterTypes":[] }, {"name":"getInternal","parameterTypes":[] }, {"name":"getIpam","parameterTypes":[] }, {"name":"getLabels","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"getOptions","parameterTypes":[] }]
116+
},
117+
{
118+
"condition":{"typeReachable":"org.testcontainers.shaded.com.github.dockerjava.core.exec.ExecCreateCmdExec"},
119+
"name":"org.testcontainers.shaded.com.github.dockerjava.core.command.ExecCreateCmdImpl",
120+
"allDeclaredFields":true,
121+
"queryAllDeclaredMethods":true,
122+
"queryAllDeclaredConstructors":true,
123+
"methods":[{"name":"getContainerId","parameterTypes":[] }, {"name":"getEnv","parameterTypes":[] }, {"name":"getPrivileged","parameterTypes":[] }, {"name":"getUser","parameterTypes":[] }, {"name":"getWorkingDir","parameterTypes":[] }]
124+
},
125+
{
126+
"condition":{"typeReachable":"org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder"},
127+
"name":"org.testcontainers.shaded.com.github.dockerjava.core.command.ExecStartCmdImpl",
128+
"allDeclaredFields":true,
129+
"queryAllDeclaredMethods":true,
130+
"queryAllDeclaredConstructors":true
131+
},
132+
{
133+
"condition":{"typeReachable":"org.testcontainers.containers.GenericContainer"},
134+
"name":"org.testcontainers.shaded.org.awaitility.core.ConditionFactory$1",
135+
"allDeclaredMethods": true
136+
},
137+
{
138+
"condition":{"typeReachable":"org.testcontainers.containers.GenericContainer$$Lambda/0x00007f841f23d008"},
139+
"name":"org.testcontainers.shaded.org.awaitility.core.ConditionFactory$1"
140+
},
141+
{
142+
"condition":{"typeReachable":"org.testcontainers.shaded.org.awaitility.core.ConditionFactory"},
143+
"name":"org.testcontainers.shaded.org.awaitility.core.ConditionFactory$1"
144+
},
145+
{
146+
"condition":{"typeReachable":"org.testcontainers.shaded.org.awaitility.core.ConditionFactory$1"},
147+
"name":"org.testcontainers.shaded.org.awaitility.core.ConditionFactory$1"
148+
},
149+
{
150+
"condition":{"typeReachable":"org.testcontainers.shaded.org.hamcrest.TypeSafeMatcher"},
151+
"name":"org.testcontainers.shaded.org.awaitility.core.ConditionFactory$1"
152+
},
153+
{
154+
"condition":{"typeReachable":"org.testcontainers.shaded.org.hamcrest.internal.ReflectiveTypeFinder"},
155+
"name":"org.testcontainers.shaded.org.awaitility.core.ConditionFactory$1"
156+
},
157+
{
158+
"condition":{"typeReachable":"org.testcontainers.shaded.com.fasterxml.jackson.databind.util.ClassUtil"},
159+
"name":"org.testcontainers.shaded.com.github.dockerjava.core.command.CreateContainerCmdImpl",
160+
"allDeclaredMethods": true,
161+
"allDeclaredConstructors": true
162+
},
163+
{
164+
"condition":{"typeReachable":"org.testcontainers.junit.jupiter.Testcontainers"},
165+
"name":"org.testcontainers.junit.jupiter.Testcontainers",
166+
"allPublicMethods": true
167+
},
168+
{
169+
"condition":{"typeReachable":"org.testcontainers.shaded.com.github.dockerjava.core.command.CreateContainerCmdImpl"},
170+
"name":"org.testcontainers.shaded.com.github.dockerjava.core.command.CreateContainerCmdImpl$NetworkingConfig",
171+
"allDeclaredFields": true,
172+
"allDeclaredMethods": true,
173+
"allDeclaredConstructors": true
174+
},
175+
{
176+
"condition":{"typeReachable":"com.github.dockerjava.api.model.Network"},
177+
"name":"com.github.dockerjava.api.model.Network",
178+
"allDeclaredMethods": true
179+
},
180+
{
181+
"condition":{"typeReachable":"com.github.dockerjava.api.model.Network"},
182+
"name":"com.github.dockerjava.api.model.Network$Ipam",
183+
"allDeclaredMethods": true
184+
},
185+
{
186+
"condition":{"typeReachable":"com.github.dockerjava.api.model.Network"},
187+
"name":"com.github.dockerjava.api.model.Network$Ipam$Config",
188+
"allDeclaredMethods": true
189+
},
190+
{
191+
"condition":{"typeReachable":"com.github.dockerjava.api.model.Network"},
192+
"name":"com.github.dockerjava.api.model.Network$ContainerNetworkConfig",
193+
"allDeclaredMethods": true
194+
}
195+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
{
2+
"resources":{
3+
"includes":[{
4+
"condition":{"typeReachable":"org.testcontainers.jdbc.ContainerDatabaseDriver"},
5+
"pattern":"\\QMETA-INF/services/org.testcontainers.containers.JdbcDatabaseContainerProvider\\E"
6+
}, {
7+
"condition":{"typeReachable":"org.testcontainers.containers.GenericContainer"},
8+
"pattern":"\\QMETA-INF/services/org.testcontainers.core.CreateContainerCmdModifier\\E"
9+
}, {
10+
"condition":{"typeReachable":"org.testcontainers.DockerClientFactory"},
11+
"pattern":"\\QMETA-INF/services/org.testcontainers.dockerclient.DockerClientProviderStrategy\\E"
12+
}, {
13+
"condition":{"typeReachable":"org.testcontainers.shaded.com.google.common.io.Resources"},
14+
"pattern":"\\Qcontainer-license-acceptance.txt\\E"
15+
}, {
16+
"condition":{"typeReachable":"org.testcontainers.containers.wait.strategy.HostPortWaitStrategy"},
17+
"pattern":"\\Qlogback-test.xml\\E"
18+
}, {
19+
"condition":{"typeReachable":"org.testcontainers.utility.ClasspathScanner"},
20+
"pattern":"\\Qtestcontainers.properties\\E"
21+
}, {
22+
"condition":{"typeReachable":"org.testcontainers.utility.ImageNameSubstitutor"},
23+
"pattern":"\\QMETA-INF/services/org.testcontainers.utility.ImageNameSubstitutor\\E"
24+
}, {
25+
"condition":{"typeReachable":"org.testcontainers.shaded.com.github.dockerjava.core.DefaultDockerClientConfig"},
26+
"pattern":"\\Qdocker-java.properties\\E"
27+
}, {
28+
"condition":{"typeReachable":"org.testcontainers.dockerclient.DockerClientProviderStrategy"},
29+
"pattern":"\\QMETA-INF/services/java.net.spi.InetAddressResolverProvider\\E"
30+
}]},
31+
"bundles":[]
32+
}

0 commit comments

Comments
 (0)