kafka-connect-jdbc icon indicating copy to clipboard operation
kafka-connect-jdbc copied to clipboard

Teradata Sink failed to get initialized

Open Harish-Sridhar opened this issue 3 years ago • 1 comments

Hi,

I have installed kafka-connect-jdbc connector from confluent hub, version 10.2.0. I have also installed the latest teradata jdbc 4 driver. and put it in the path /usr/share/confluent-hub-components/confluentinc-kafka-connect-jdbc/lib

When i run a job with the kafka-connect-jdbc-sink connector, with teradata database configured in the jdbc url,

I get the following error during the job initialization.

021-06-02 10:08:10,075] ERROR WorkerSinkTask{id=jdbc-td-job-0} Task threw an uncaught and unrecoverable exception. Task is being killed and will not recover until manually restarted. Error: oracle/i18n/util/LocaleMapper (org.apache.kafka.connect.runtime.WorkerSinkTask)
java.lang.NoClassDefFoundError: oracle/i18n/util/LocaleMapper
	at oracle.xml.parser.v2.XMLReader.setEncoding(XMLReader.java:996)
	at oracle.xml.parser.v2.XMLReader.checkXMLDecl(XMLReader.java:3576)
	at oracle.xml.parser.v2.XMLReader.pushXMLReader(XMLReader.java:586)
	at oracle.xml.parser.v2.XMLReader.pushXMLReader(XMLReader.java:290)
	at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:244)
	at oracle.xml.jaxp.JXDocumentBuilder.parse(JXDocumentBuilder.java:176)
	at oracle.xml.jaxp.JXDocumentBuilder.parse(JXDocumentBuilder.java:132)
	at com.teradata.tdgss.jtdgss.TdgssParseXml.parse(TdgssParseXml.java:664)
	at com.teradata.tdgss.jtdgss.TdgssConfigApi.<init>(TdgssConfigApi.java:95)
	at com.teradata.tdgss.jtdgss.TdgssConfigApi.<clinit>(TdgssConfigApi.java:49)
	at com.teradata.tdgss.jtdgss.TdgssManager.<init>(TdgssManager.java:66)
	at com.teradata.tdgss.jtdgss.TdgssManager.<clinit>(TdgssManager.java:28)
	at com.teradata.jdbc.jdbc.GenericTeraEncrypt.getGSSM(GenericTeraEncrypt.java:577)
	at com.teradata.jdbc.jdbc.GenericTeraEncrypt.<init>(GenericTeraEncrypt.java:116)
	at com.teradata.jdbc.jdbc.GenericTeradataConnection.<init>(GenericTeradataConnection.java:108)
	at com.teradata.jdbc.jdbc_4.TDSession.<init>(TDSession.java:187)
	at com.teradata.jdbc.jdk6.JDK6_SQL_Connection.<init>(JDK6_SQL_Connection.java:36)
	at com.teradata.jdbc.jdk6.JDK6ConnectionFactory.constructSQLConnection(JDK6ConnectionFactory.java:25)
	at com.teradata.jdbc.jdbc.ConnectionFactory.createConnection(ConnectionFactory.java:181)
	at com.teradata.jdbc.jdbc.ConnectionFactory.createConnection(ConnectionFactory.java:171)
	at com.teradata.jdbc.TeraDriver.doConnect(TeraDriver.java:236)
	at com.teradata.jdbc.TeraDriver.connect(TeraDriver.java:162)
	at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
	at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:189)
	at io.confluent.connect.jdbc.dialect.GenericDatabaseDialect.getConnection(GenericDatabaseDialect.java:234)
	at io.confluent.connect.jdbc.util.CachedConnectionProvider.newConnection(CachedConnectionProvider.java:83)
	at io.confluent.connect.jdbc.util.CachedConnectionProvider.getConnection(CachedConnectionProvider.java:52)
	at io.confluent.connect.jdbc.sink.JdbcDbWriter.write(JdbcDbWriter.java:64)
	at io.confluent.connect.jdbc.sink.JdbcSinkTask.put(JdbcSinkTask.java:84)
	at org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:586)
	at org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:329)
	at org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:232)
	at org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:201)
	at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:185)
	at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:234)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.ClassNotFoundException: oracle.i18n.util.LocaleMapper
	at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
	at org.apache.kafka.connect.runtime.isolation.PluginClassLoader.loadClass(PluginClassLoader.java:104)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	... 40 more

From this what i think is happening is following: Kafka connect is picking up the teradata jdbc driver jar. The teradata jdbc driver is having some dependency on oracle.i18n.util.LocalMapper But that class is not available in the jar orai18n-19.7.0.0.jar found in the kafka-connect-jdbc connector.

Can some one help me to understand what is going wrong and how to solve this?

Regards, Harish.

Harish-Sridhar avatar Jun 02 '21 12:06 Harish-Sridhar

Did you ever fix this issue? Got the same error...

dderond avatar Mar 27 '24 10:03 dderond