Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ERROR Plugin class loader for connector #43

Open
charliecat22 opened this issue Apr 9, 2020 · 33 comments
Open

ERROR Plugin class loader for connector #43

charliecat22 opened this issue Apr 9, 2020 · 33 comments

Comments

@charliecat22
Copy link

I already copy kafka-connect-oracle-1.0.jar and ojdbc7.jar to KAFKA_HOME/libs.
./bin/connect-standalone.sh config/connect-standalone.properties config/OracleSourceConnector.properties
ERROR:
ERROR Plugin class loader for connector: 'com.ecer.kafka.connect.oracle.OracleSourceConnector' was not found. Returning: org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader@7be58f16 (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:165)

@erdemcer
Copy link
Owner

erdemcer commented Apr 9, 2020

Hi,
According to your other issues , you have solved this issue ?

@charliecat22
Copy link
Author

Hi,
At first i used kafka_2.11-2.4.0 . I can't solve this issue.
Then i change to kafka_2.11-2.1.1 ,the other error occured.

@erdemcer
Copy link
Owner

It seems connector jar file could not be found in CLASSPATH . Could you please check it ?

@charliecat22
Copy link
Author

I need copy connector jar to JAVA_HOME ?

@erdemcer
Copy link
Owner

You can copy your jar file to $KAFKA_HOME/share/java/kafka

@charliecat22
Copy link
Author

I will try later.
Now I'm working with kafka_2.11-2.1.1 , do not report this jar error.
Thank you !

@charliecat22
Copy link
Author

eidted /etc/profile
export CLASSPATH=.:$KAFKA_HOME/share/java/kafka/kafka-connect-oracle-1.0.jar
Still report this error
ERROR Plugin class loader for connector: 'com.ecer.kafka.connect.oracle.OracleSourceConnector' was not found.

@erdemcer
Copy link
Owner

Before execution i set CLASSPATH as
export CLASSPATH=$KAFKA_HOME/share/java/kafka/:$KAFKA_HOME/share/java/kafka-connect-jdbc/

@erdemcer
Copy link
Owner

confluentinc/kafka-connect-jdbc#766
Could you please check it out ?

@charliecat22
Copy link
Author

I cp the jar to $KAFKA_HOME/share/java/kafka-connect-jdbc/ .
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:/opt/kafka_2.11-2.4.0/lib/orai18n-12.1.0.2.0.jar:/opt/kafka_2.11-2.4.0/share/java/kafka/:/opt/kafka_2.11-2.4.0/share/java/kafka-connect-jdbc/
ERROR:
[2020-04-13 10:22:42,435] ERROR Failed to create job for config/OracleSourceConnector.properties (org.apache.kafka.connect.cli.ConnectStandalone:110) [2020-04-13 10:22:42,437] ERROR Stopping after connector error (org.apache.kafka.connect.cli.ConnectStandalone:121) java.util.concurrent.ExecutionException: org.apache.kafka.connect.errors.ConnectException: Failed to find any class that implements Connector and which name matches com.ecer.kafka.connect.oracle.OracleSourceConnector, available connectors are: PluginDesc{klass=class org.apache.kafka.connect.file.FileStreamSinkConnector, name='org.apache.kafka.connect.file.FileStreamSinkConnector', version='2.4.0', encodedVersion=2.4.0, type=sink, typeName='sink', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.file.FileStreamSourceConnector, name='org.apache.kafka.connect.file.FileStreamSourceConnector', version='2.4.0', encodedVersion=2.4.0, type=source, typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.mirror.MirrorCheckpointConnector, name='org.apache.kafka.connect.mirror.MirrorCheckpointConnector', version='1', encodedVersion=1, type=source, typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.mirror.MirrorHeartbeatConnector, name='org.apache.kafka.connect.mirror.MirrorHeartbeatConnector', version='1', encodedVersion=1, type=source, typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.mirror.MirrorSourceConnector, name='org.apache.kafka.connect.mirror.MirrorSourceConnector', version='1', encodedVersion=1, type=source, typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.MockConnector, name='org.apache.kafka.connect.tools.MockConnector', version='2.4.0', encodedVersion=2.4.0, type=connector, typeName='connector', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.MockSinkConnector, name='org.apache.kafka.connect.tools.MockSinkConnector', version='2.4.0', encodedVersion=2.4.0, type=sink, typeName='sink', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.MockSourceConnector, name='org.apache.kafka.connect.tools.MockSourceConnector', version='2.4.0', encodedVersion=2.4.0, type=source, typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.SchemaSourceConnector, name='org.apache.kafka.connect.tools.SchemaSourceConnector', version='2.4.0', encodedVersion=2.4.0, type=source, typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.VerifiableSinkConnector, name='org.apache.kafka.connect.tools.VerifiableSinkConnector', version='2.4.0', encodedVersion=2.4.0, type=source, typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.VerifiableSourceConnector, name='org.apache.kafka.connect.tools.VerifiableSourceConnector', version='2.4.0', encodedVersion=2.4.0, type=source, typeName='source', location='classpath'} at org.apache.kafka.connect.util.ConvertingFutureCallback.result(ConvertingFutureCallback.java:115) at org.apache.kafka.connect.util.ConvertingFutureCallback.get(ConvertingFutureCallback.java:99) at org.apache.kafka.connect.cli.ConnectStandalone.main(ConnectStandalone.java:118) Caused by: org.apache.kafka.connect.errors.ConnectException: Failed to find any class that implements Connector and which name matches com.ecer.kafka.connect.oracle.OracleSourceConnector, available connectors are: PluginDesc{klass=class org.apache.kafka.connect.file.FileStreamSinkConnector, name='org.apache.kafka.connect.file.FileStreamSinkConnector', version='2.4.0', encodedVersion=2.4.0, type=sink, typeName='sink', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.file.FileStreamSourceConnector, name='org.apache.kafka.connect.file.FileStreamSourceConnector', version='2.4.0', encodedVersion=2.4.0, type=source, typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.mirror.MirrorCheckpointConnector, name='org.apache.kafka.connect.mirror.MirrorCheckpointConnector', version='1', encodedVersion=1, type=source, typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.mirror.MirrorHeartbeatConnector, name='org.apache.kafka.connect.mirror.MirrorHeartbeatConnector', version='1', encodedVersion=1, type=source, typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.mirror.MirrorSourceConnector, name='org.apache.kafka.connect.mirror.MirrorSourceConnector', version='1', encodedVersion=1, type=source, typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.MockConnector, name='org.apache.kafka.connect.tools.MockConnector', version='2.4.0', encodedVersion=2.4.0, type=connector, typeName='connector', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.MockSinkConnector, name='org.apache.kafka.connect.tools.MockSinkConnector', version='2.4.0', encodedVersion=2.4.0, type=sink, typeName='sink', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.MockSourceConnector, name='org.apache.kafka.connect.tools.MockSourceConnector', version='2.4.0', encodedVersion=2.4.0, type=source, typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.SchemaSourceConnector, name='org.apache.kafka.connect.tools.SchemaSourceConnector', version='2.4.0', encodedVersion=2.4.0, type=source, typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.VerifiableSinkConnector, name='org.apache.kafka.connect.tools.VerifiableSinkConnector', version='2.4.0', encodedVersion=2.4.0, type=source, typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.VerifiableSourceConnector, name='org.apache.kafka.connect.tools.VerifiableSourceConnector', version='2.4.0', encodedVersion=2.4.0, type=source, typeName='source', location='classpath'} at org.apache.kafka.connect.runtime.isolation.Plugins.connectorClass(Plugins.java:203) at org.apache.kafka.connect.runtime.isolation.Plugins.newConnector(Plugins.java:175) at org.apache.kafka.connect.runtime.AbstractHerder.getConnector(AbstractHerder.java:519) at org.apache.kafka.connect.runtime.AbstractHerder.validateConnectorConfig(AbstractHerder.java:289) at org.apache.kafka.connect.runtime.standalone.StandaloneHerder.putConnectorConfig(StandaloneHerder.java:194) at org.apache.kafka.connect.cli.ConnectStandalone.main(ConnectStandalone.java:115)

@erdemcer
Copy link
Owner

Hi,
Delete all kafka-connect-oracle-1.0.jar and ojdbc7.jar jar files from directories where you copied . Then only copy these jar files to $KAFKA_HOME/share/java/kafka directıry. This location is set as classpath while starting connector . Do not set any classpath variable . Then try to start . If error continues , could you please send all output ?
Thanks

@charliecat22
Copy link
Author

Now I copy kafka-connect-oracle-1.0.jar to $KAFKA_HOME/share/java/kafka, copy ojdbc7.jar to $KAFKA_HOME/libs and edited connect-standalone.properties : plugin.path=$KAFKA_HOME/share/java/kafka.
There is no error report, but I also can not capture any changes.

@erdemcer
Copy link
Owner

Hi again,
Could you please send log output from connector start to last ?

@charliecat22
Copy link
Author

Hi ,
log.txt

@erdemcer
Copy link
Owner

Could you please write table.blacklist and table.whitelist param values uppercase ?

@charliecat22
Copy link
Author

It doesn't work

@erdemcer
Copy link
Owner

Restart the connector after change ?

@charliecat22
Copy link
Author

yes

@erdemcer
Copy link
Owner

Hi,
After setting table.blacklist and table.whilelist values to uppercase , could you please last log file including DML executed ?

@charliecat22
Copy link
Author

Hi ,
I reset all steps follow the quickstart in kafka_2.11-2.1.1 . Then it worked . It can capture the changes.
But it can not work in kafka_2.11-2.4.0

@erdemcer
Copy link
Owner

Hi,
I have tested in kafka_2.11-2.4.0 but i could not see any problem . Messages are published . If it is possible i would like to see your issue from remote ?

@charliecat22
Copy link
Author

Hi,
I tried again with kafka_2.11-2.4.0 . It worked and captured changes.
I think somethings wrong in properties before.

@charliecat22
Copy link
Author

Hi,
I have some questions.
Distributed support or not ?
If kafka closed unexpectedly, the DML changes commit during the shutdown timing will lost or not ?

@erdemcer
Copy link
Owner

erdemcer commented Apr 14, 2020

Hi,
Glad to hear that it has worked. Working on distributed support .Actually connector restarts from last position where it has stopped . But i recommend you to test on your site. If any error or unexcepted issue occurs , please do not hesitate to send me.

@charliecat22
Copy link
Author

Hi,
I already tested.
I insert and commit some datas after I killed connect-standalone.sh.
Then I restart connect-standalone.sh , consumer can not receive the datas i have commited.
After restarted , I commit other datas,the consumer receive immediately.
The data commited during the connect-standalone closed , it seems lost.

@erdemcer
Copy link
Owner

What is you reset.offset parameter value ? it must be false to start connector where it left off

@charliecat22
Copy link
Author

Hi ,
I set reset.offset to false, it worked.
Thank you for your patience these days.
Forgive me for my poor English grammar.
I will not shame ask you about distributed and other questions later.

@erdemcer
Copy link
Owner

No problem . These issues provides information for connector to make it better . Every time you can ask.
Thanks

@aaa55856
Copy link

aaa55856 commented Sep 28, 2020

Hello, I have come across the same problem discussed above.

I worked with kafka_2.13-2.4.1, Oracle 11g.

I copied kafka-connect-oracle-1.0.68.jar to $KAFKA_HOME/java/kafka/ and set $KAFKA_HOME/java/kafka/ to CLASSPATH in .bash_profile.
And, I copied ojdbc7.jar to $KAFKA_HOME/libs but not set it to be CLASSPATH.

What's more, I set plugin.path=$KAFKA_HOME/share/java/kafka in $KAFKA_HOME/config/OracleSourceConnector.properties.

It seems to solve the problem
ERROR Plugin class loader for connector: 'com.ecer.kafka.connect.oracle.OracleSourceConnector' was not found.

But I still get the error
[2020-09-28 15:57:03,088] ERROR Failed to create job for ./config/OracleSourceConnector.properties (org.apache.kafka.connect.cli.ConnectStandalone:110) [2020-09-28 15:57:03,088] ERROR Stopping after connector error (org.apache.kafka.connect.cli.ConnectStandalone:121) java.util.concurrent.ExecutionException: org.apache.kafka.connect.runtime.rest.errors.BadRequestException: Connector configuration is invalid and contains the following 1 error(s): Missing required configuration "table.blacklist" which has no default value. You can also find the above list of errors at the endpoint /{connectorType}/config/validateat org.apache.kafka.connect.util.ConvertingFutureCallback.result(ConvertingFutureCallback.java:115) at org.apache.kafka.connect.util.ConvertingFutureCallback.get(ConvertingFutureCallback.java:99) at org.apache.kafka.connect.cli.ConnectStandalone.main(ConnectStandalone.java:118) Caused by: org.apache.kafka.connect.runtime.rest.errors.BadRequestException: Connector configuration is invalid and contains the following 1 error(s): Missing required configuration "table.blacklist" which has no default value. You can also find the above list of errors at the endpoint/{connectorType}/config/validateat org.apache.kafka.connect.runtime.AbstractHerder.maybeAddConfigErrors(AbstractHerder.java:560) at org.apache.kafka.connect.runtime.standalone.StandaloneHerder.putConnectorConfig(StandaloneHerder.java:194) at org.apache.kafka.connect.cli.ConnectStandalone.main(ConnectStandalone.java:115) [2020-09-28 15:57:03,089] INFO Kafka Connect stopping (org.apache.kafka.connect.runtime.Connect:66) [2020-09-28 15:57:03,089] INFO Stopping REST server (org.apache.kafka.connect.runtime.rest.RestServer:321) [2020-09-28 15:57:03,135] INFO Stopped http_8083@4264b240{HTTP/1.1,[http/1.1]}{0.0.0.0:8083} (org.eclipse.jetty.server.AbstractConnector:343) [2020-09-28 15:57:03,136] INFO node0 Stopped scavenging (org.eclipse.jetty.server.session:158) [2020-09-28 15:57:03,175] INFO REST server stopped (org.apache.kafka.connect.runtime.rest.RestServer:338) [2020-09-28 15:57:03,176] INFO Herder stopping (org.apache.kafka.connect.runtime.standalone.StandaloneHerder:100) [2020-09-28 15:57:03,176] INFO Worker stopping (org.apache.kafka.connect.runtime.Worker:198) [2020-09-28 15:57:03,176] INFO Stopped FileOffsetBackingStore (org.apache.kafka.connect.storage.FileOffsetBackingStore:66) [2020-09-28 15:57:03,176] INFO Worker stopped (org.apache.kafka.connect.runtime.Worker:219) [2020-09-28 15:57:03,177] INFO Herder stopped (org.apache.kafka.connect.runtime.standalone.StandaloneHerder:117) [2020-09-28 15:57:03,177] INFO Kafka Connect stopped (org.apache.kafka.connect.runtime.Connect:71)

Thanks

@charliecat22
Copy link
Author

Please try:

  1. copy ojdbc8.jar , orai18n-12.1.0.2.0.jar to /opt/kafka_2.11-2.4.0/libs/
  2. mkdir -p /opt/kafka_2.11-2.4.0/share/java/kafka
  3. copy kafka-connect-oracle-1.0.jar to /opt/kafka_2.11-2.4.0/share/java/kafka/
  4. edit connect-standalone.properties set plugin.path=/opt/kafka_2.11-2.4.0/share/java/kafka

@aaa55856
Copy link

aaa55856 commented Sep 28, 2020

Hi, Thanks for your reply! @charliecat22

I had a try to copy ojdbc6.jar, orai18n.jar to $KAFKA_HOME/libs (ojdbc6.jar is the JDBC Driver of Oracle Database 11.2.0.4)
But unfortunately, it made nothing changed... I got the same error as above.

  1. I think the plugin kafka-connect-oracle-1.0.68.jar has been loaded successfully.
  2. I want to know what the error ERROR Failed to create job for ./config/OracleSourceConnector.properties (org.apache.kafka.connect.cli.ConnectStandalone:110) means.... Should I read the source code and build a sample demo to find out the error?

I ran the whole environment(CentOS 7) in virtualbox. It's a whole new environment and I followed the instructions step by step. Why it can not work?

Are threre something wrong in Java or kafka or ojdbc or the building process of jar?
I would be appreciate if anyone could give me some idea to fix it.

@charliecat22
Copy link
Author

Hi @aaa55856 ,
I checked your error message.
Missing required configuration "table.blacklist" which has no default value.
It could be your OracleSourceConnector.properties miss table.blacklist=

@aaa55856
Copy link

aaa55856 commented Sep 29, 2020

Oh!
It worked after I added the "table.blacklist".
I did not think that was a must.
Thank you very much!! @charliecat22

But I got another error
ERROR WorkerSourceTask{id=oracle-logminer-connector-0} Task threw an uncaught and unrecoverable exception (org.apache.kafka.connect.runtime.WorkerTask:179) org.apache.kafka.connect.errors.ConnectException: Error at database tier, Please check : java.sql.SQLException: No suitable driver found for jdbc:oracle:thin:@192.168.0.152:1521/orcl at com.ecer.kafka.connect.oracle.OracleSourceTask.start(OracleSourceTask.java:219) at org.apache.kafka.connect.runtime.WorkerSourceTask.execute(WorkerSourceTask.java:208) at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:177) at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:227) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) [2020-09-29 22:16:04,175] ERROR WorkerSourceTask{id=oracle-logminer-connector-0} Task is being killed and will not recover until manually restarted (org.apache.kafka.connect.runtime.WorkerTask:180)
maybe something wrong in oracle or ojdbc....

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants