Impala JDBC Connection Issue

HI There I am trying to get a connection to an Impala instance we have.
I have been able to successfully use Squirel SQL client to connect using the JDBC driver.
With the same connection string in Ignition the driver logs appear to stop when we try to make a connection.
For reference our connection authentication is through Kerberos and over SSL. I know these settings are correct based on my Squirrel SQL client test. The only thing i see different in the jdbc driver logs is that the log in timeout is different. Although i dont know if 0 mean “no timeout”
I am also seeing an exception on the Ignition log files

I apologize for the horrific formatting in advance.

Here is the driver log file

Oct 17 08:40:05.977 TRACE 105 com.cloudera.impala.jdbc.common.CommonCoreUtils.logConnectionFunctionEntrance({AuthMech=Variant[type: TYPE_WSTRING, value: 1], ConnSchema=Variant[type: TYPE_WSTRING, value: default], DatabaseType=Variant[type: TYPE_WSTRING, value: Impala], HiveServerType=Variant[type: TYPE_WSTRING, value: 2], Host=Variant[type: TYPE_WSTRING, value: "impalanode"], KrbHostFQDN=Variant[type: TYPE_WSTRING, value:"impalanode"], KrbRealm=Variant[type: TYPE_WSTRING, value: kerb.realm.com], KrbServiceName=Variant[type: TYPE_WSTRING, value: impala], LogLevel=Variant[type: TYPE_WSTRING, value: 6], LogPath=Variant[type: TYPE_WSTRING, value: C:\\temp_ajit], Port=Variant[type: TYPE_WSTRING, value: 21050], SocketTimeout=Variant[type: TYPE_WSTRING, value: 30], SSL=Variant[type: TYPE_WSTRING, value: 1], SSLTrustStore=Variant[type: TYPE_WSTRING, value: C:\Download\jssecacerts], SSLTrustStorePwd=Variant[type: TYPE_WSTRING, value: changeit]}, "Major Version: 2", "Minor Version: 6", "Hot Fix Version: 15", "Build Number: 1017", "java.vendor:Azul Systems, Inc.", "java.version:11.0.4", "os.arch:amd64", "os.name:Windows 10", "os.version:10.0", "Runtime.totalMemory:1073741824", "Runtime.maxMemory:2147483648", "Runtime.avaialableProcessors:8", URLClassLoader.getURLs(): No URLClassLoader available.): +++++ enter +++++
Oct 17 08:40:05.977 TRACE 105 com.cloudera.impala.dsi.core.impl.DSIConnection.getProperty(170): +++++ enter +++++
Oct 17 08:40:05.978 DEBUG 105 com.cloudera.impala.hivecommon.core.HiveJDBCCommonConnection.establishConnection: socketTimeout = 30, loginTimeout = 0
Oct 17 08:40:05.978 TRACE 105 com.cloudera.impala.hivecommon.api.ServiceDiscoveryFactory.createClient(com.cloudera.impala.hivecommon.HiveJDBCSettings@54cc7b58, com.cloudera.impala.dsi.core.impl.DSILogger@1a7f1032, com.cloudera.impala.jdbc.common.SWarningListener@32b6b862): +++++ enter +++++
Oct 17 08:40:05.978 TRACE 105 com.cloudera.impala.jdbc.utils.rpc.CustomNetworkHooks.getCustomSocketFactory(com.cloudera.impala.jdbc.common.CustomNetworkHooksSettings@39273563): +++++ enter +++++
Oct 17 08:40:05.978 TRACE 105 com.cloudera.impala.jdbc.rpc.CustomDnsResolverLoader.getDnsResolver(com.cloudera.impala.jdbc.common.CustomNetworkHooksSettings@39273563): +++++ enter +++++
Oct 17 08:40:05.978 TRACE 105 com.cloudera.impala.jdbc.rpc.CustomDnsResolverLoader.getResolvedHost(com.cloudera.impala.jdbc.rpc.InternalDnsResolver@3ed5ef8d, "impalanode"): +++++ enter +++++
Oct 17 08:40:05.978 TRACE 105 com.cloudera.impala.hivecommon.api.TETSSLTransportFactory.getClientSocket(com.cloudera.impala.hivecommon.HiveJDBCSettings@54cc7b58, com.cloudera.impala.jdbc.common.SSLTransportParameters@97455b4, null): +++++ enter +++++

Here is the exception thrown in igntion
java.lang.NoClassDefFoundError: Could not initialize class

com.cloudera.impala.jdbc4.internal.apache.thrift.transport.TSocket

at com.cloudera.impala.hivecommon.api.TETSSLTransportFactory.createClient(Unknown Source)

at com.cloudera.impala.hivecommon.api.TETSSLTransportFactory.getClientSocket(Unknown Source)

at com.cloudera.impala.hivecommon.api.HiveServer2ClientFactory.createTransport(Unknown Source)

at com.cloudera.impala.hivecommon.api.ServiceDiscoveryFactory.createClient(Unknown Source)

at com.cloudera.impala.hivecommon.core.HiveJDBCCommonConnection.establishConnection(Unknown Source)

at com.cloudera.impala.impala.core.ImpalaJDBCDSIConnection.establishConnection(Unknown Source)

at com.cloudera.impala.jdbc.core.LoginTimeoutConnection.connect(Unknown Source)

at com.cloudera.impala.jdbc.common.BaseConnectionFactory.doConnect(Unknown Source)

at com.cloudera.impala.jdbc.common.AbstractDriver.connect(Unknown Source)

at org.apache.commons.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:53)

at org.apache.commons.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:291)

at org.apache.commons.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:2395)

at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2381)

at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2110)

at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1563)

at com.inductiveautomation.ignition.gateway.datasource.DatasourceImpl.getConnectionInternal(DatasourceImpl.java:257)

at com.inductiveautomation.ignition.gateway.datasource.DatasourceImpl.runTest(DatasourceImpl.java:211)

at com.inductiveautomation.ignition.gateway.datasource.DatasourceManagerImpl$FaultedDatasourceRetryer.lambda$newRetryRunnable$0(DatasourceManagerImpl.java:1017)

at com.inductiveautomation.ignition.common.execution.impl.BasicExecutionEngine$TrackedTask.run(BasicExecutionEngine.java:565)

at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)

at java.base/java.util.concurrent.FutureTask.runAndReset(Unknown Source)

at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)

at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.base/java.lang.Thread.run(Unknown Source)

This is silly and shouldn’t be necessary, but have you tried restarting? Some googling shows that someone who had the same error when trying to use this driver with Apache NiFi restarted and it worked afterwards…

If not, can you upload the full logs somewhere in case there’s more info/errors in there? And maybe the JDBC driver too.

Restarting the client computer or the cluster…?

The Ignition gateway, after having installed the JDBC driver.

Unfortunately no luck. Are there any more detailed logs i can get from ingnition gateway to send out? From the driver side i have all the logging i can enable on at this point and what you saw in the original post is what i have from their side.

I don’t know if there’s anything more to turn on. This error is obviously the problem:

java.lang.NoClassDefFoundError: Could not initialize class com.cloudera.impala.jdbc4.internal.apache.thrift.transport.TSocket

Typically this would mean that the TSocket class can’t be found or isn’t included in the JDBC jar file for some reason, but I imagine there’s something more complicated going on. Never seen this JDBC driver before so I don’t really know.

I tried uploaded the .jar file but alas to large.
You can download it here if you are curious.

We are using the ImapalaJDBC41.jar

For anybody with same issue, the jdbc driver from Impala is very sensible to Java version.
Make sure you start from impala version, then check which java you have, and then select a version that matches BOTH of them.