Unable to load couchbase source connector

I’m getting this one last error when I try to create my connector. I have checked the system for multiple core-io and confirmed that there is only the one in my plug-in folder.
Here’s the error I’m seeing:

[2022-07-07 01:35:35,851] ERROR Failed to create job for config/connect-couchbase-incentiveData-source.properties (org.apache.kafka.connect.cli.ConnectStandalone:107)
[2022-07-07 01:35:35,858] ERROR Stopping after connector error (org.apache.kafka.connect.cli.ConnectStandalone:117)
java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: com/couchbase/client/core/logging/RedactionLevel
        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:114)
Caused by: java.lang.NoClassDefFoundError: com/couchbase/client/core/logging/RedactionLevel
        at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
        at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3166)
        at java.base/java.lang.Class.privateGetPublicMethods(Class.java:3191)
        at java.base/java.lang.Class.privateGetPublicMethods(Class.java:3203)
        at java.base/java.lang.Class.privateGetPublicMethods(Class.java:3203)
        at java.base/java.lang.Class.getMethods(Class.java:1904)
        at com.couchbase.connect.kafka.util.config.KafkaConfigProxyFactory.define(KafkaConfigProxyFactory.java:166)
        at com.couchbase.connect.kafka.util.config.KafkaConfigProxyFactory.define(KafkaConfigProxyFactory.java:158)
        at com.couchbase.connect.kafka.util.config.ConfigHelper.define(ConfigHelper.java:34)
        at com.couchbase.connect.kafka.CouchbaseSourceConnector.config(CouchbaseSourceConnector.java:133)
        at org.apache.kafka.connect.runtime.AbstractHerder.validateConnectorConfig(AbstractHerder.java:391)
        at org.apache.kafka.connect.runtime.AbstractHerder.lambda$validateConnectorConfig$2(AbstractHerder.java:351)
        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:829)
Caused by: java.lang.ClassNotFoundException: com.couchbase.client.core.logging.RedactionLevel
        at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476)
        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)
        ... 17 more
[2022-07-07 01:35:35,860] INFO Kafka Connect stopping (org.apache.kafka.connect.runtime.Connect:67)

I’m at a lost as to what I missed.

I have this connector working in another Kafka instance, but can’t seem to get it working in this instance.

Hi @elbilo,

It might be some variation of the same issue. Can you remove all traces of the Couchbase libraries, then reinstall the connector?

Thanks,
David

Tried removing what I had done for the couchbase-kafka-connector install and reinstalled it. Also added the environment value for CLASSPATH to point to my plugin folder. Still no luck getting the connector to load.

One other symptom I found was that the Kafka REST API port 8083 would refuse connection but this might be due to this being the only connector I’m running on this instance and it not installing.

I can successfully test the standalone-console connector and then the API port 8083 is working.

I’m still having problems getting the couchbase source connector to run. I’ve turned on the DEBUG level but it isn’t really helping me to find the problem. Here’s the run with debug logging enabled. I hope you can get me over this hump. It’s now a show stopper for our production deployment.

As an enterprise customer is there a way I can get more attention to helping me resolve this problem?

[2022-07-08 16:03:43,273] INFO Kafka Connect started (org.apache.kafka.connect.runtime.Connect:57)
[2022-07-08 16:03:43,282] DEBUG Getting plugin class loader: 'PluginClassLoader{pluginLocation=file:/home/kafka/kafka/plugins/kafka-connect-couchbase-4.1.7.jar}' for connector: com.couchbase.connect.kafka.CouchbaseSourceConnector (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:172)
[2022-07-08 16:03:43,301] ERROR Failed to create job for config/connect-couchbase-incentiveData-source.properties (org.apache.kafka.connect.cli.ConnectStandalone:107)
[2022-07-08 16:03:43,303] ERROR Stopping after connector error (org.apache.kafka.connect.cli.ConnectStandalone:117)
java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: com/couchbase/client/core/logging/RedactionLevel
        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:114)
Caused by: java.lang.NoClassDefFoundError: com/couchbase/client/core/logging/RedactionLevel
        at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
        at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3166)
        at java.base/java.lang.Class.privateGetPublicMethods(Class.java:3191)
        at java.base/java.lang.Class.privateGetPublicMethods(Class.java:3203)
        at java.base/java.lang.Class.privateGetPublicMethods(Class.java:3203)
        at java.base/java.lang.Class.getMethods(Class.java:1904)
        at com.couchbase.connect.kafka.util.config.KafkaConfigProxyFactory.define(KafkaConfigProxyFactory.java:166)
        at com.couchbase.connect.kafka.util.config.KafkaConfigProxyFactory.define(KafkaConfigProxyFactory.java:158)
        at com.couchbase.connect.kafka.util.config.ConfigHelper.define(ConfigHelper.java:34)
        at com.couchbase.connect.kafka.CouchbaseSourceConnector.config(CouchbaseSourceConnector.java:133)
        at org.apache.kafka.connect.runtime.AbstractHerder.validateConnectorConfig(AbstractHerder.java:391)
        at org.apache.kafka.connect.runtime.AbstractHerder.lambda$validateConnectorConfig$2(AbstractHerder.java:351)
        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:829)
Caused by: java.lang.ClassNotFoundException: com.couchbase.client.core.logging.RedactionLevel
        at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476)
        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)
        ... 17 more
[2022-07-08 16:03:43,311] INFO Kafka Connect stopping (org.apache.kafka.connect.runtime.Connect:67)
[2022-07-08 16:03:43,311] INFO Stopping REST server (org.apache.kafka.connect.runtime.rest.RestServer:327)
[2022-07-08 16:03:43,311] DEBUG stopping Server@4443ef6f{STARTED}[9.4.39.v20210325] (org.eclipse.jetty.util.component.AbstractLifeCycle:212)
[2022-07-08 16:03:43,311] DEBUG doStop Server@4443ef6f{STOPPING}[9.4.39.v20210325] (org.eclipse.jetty.server.Server:433)
[2022-07-08 16:03:43,312] DEBUG ran qtp1416097444-32-acceptor-0@185f7840-http_8083@4d23015c{HTTP/1.1, (http/1.1)}{0.0.0.0:8083} in QueuedThreadPool[qtp1416097444]@5467eea4{STARTED,8<=8<=200,i=6,r=-1,q=0}[ReservedThreadExecutor@60e5272{s=0/2,p=0}] (org.eclipse.jetty.util.thread.QueuedThreadPool:1038)
[2022-07-08 16:03:43,313] DEBUG Graceful shutdown Server@4443ef6f{STOPPING}[9.4.39.v20210325] by  (org.eclipse.jetty.server.handler.AbstractHandlerContainer:167)

Hi @elbilo,

Absolutely! Enterprise customers can take advantage of Couchbase Technical Support. Please file a support ticket.

It will be helpful if the ticket includes the following information:

  • Are you using Confluent Platform, plain OSS Apache Kafka, or some other Kafka distribution?
  • The shell command you use to start the connect worker process.
  • The connect worker config file (usually called connect-standalone.properties or connect-distributed.properties). The value of the plugin.path property is of particular interest.
  • A full recursive directory listing of your Kafka home directory, and any other directories referenced in the plugin.path.

In the meantime, I’d like to share the configuration that works for me.

My connect-standalone.properties file has the following value for plugin-path:

plugin.path=/Users/david.nault/opt/confluent-7.1.1/share/confluent-hub-components

And here’s what that directory looks like:

/Users/david.nault/opt/confluent-7.1.1/share/confluent-hub-components
|____couchbase-kafka-connect-couchbase
| |____etc
| | |____quickstart-couchbase-source.properties
| | |____quickstart-couchbase-sink.properties
| | |____quickstart-couchbase-sink.json
| | |____quickstart-couchbase-source.json
| | |____migrate-config-3-to-4.sh
| |____manifest.json
| |____lib
| | |____therapi-runtime-javadoc-0.13.0.jar
| | |____metrics-jmx-4.0.7.jar
| | |____metrics-core-4.0.7.jar
| | |____slf4j-api-1.7.26.jar
| | |____micrometer-core-1.8.1.jar
| | |____reactor-core-3.4.13.jar
| | |____HdrHistogram-2.1.12.jar
| | |____micrometer-registry-jmx-1.8.1.jar
| | |____LatencyUtils-2.0.3.jar
| | |____reactive-streams-1.0.3.jar
| | |____core-io-2.3.0.jar
| | |____java-client-3.3.0.jar
| | |____kafka-connect-couchbase-4.1.7.jar
| | |____jsoup-1.14.3.jar
| | |____dcp-client-0.40.0.jar
| |____doc
| | |____LICENSE
| | |____README.adoc
| |____assets
| | |____couchbase_logo.png

When the plugin.path property is set correctly, you can run the connector without messing with the Java class path. To run the connector, I use this shell command:

connect-standalone $CONFLUENT_HOME/etc/kafka/connect-standalone.properties \
                   path/to/quickstart-couchbase-source.properties

In fact, it wouldn’t hurt to explicitly clear the CLASSPATH environment variable before running that command, to make sure nothing else is sneaking in.

Thanks,
David

I’m still working this issue, but have not been able to make much progress. I read that a single Kafka node can use the connect-distributed instead of the standalone mode, so I have tried it. My connector still does not seem to work in either mode, even though I can curl Kafka-connect (curl localhost:8083/connectors) and see the couchbase connectors. However when I try to add my connector it seems to get totally ignored, there are no references in the logs.

In terms of my folder organization I’ve moved the couchbase connectors into my kafka/config folder and the /lib contents in the kafka/plugins/couchbase-connectors folder. and confirm in properties files the plugin-folder setting points to the correct location. I’ ve then deleted any temporary folders frond expanding the ziped couchbase files so there is only one set of jar files located in the plugin folder.

Hi @elbilo. Since you mentioned earlier you’re an enterprise customer, I’d recommend opening a support ticket so our support team can help you directly.

Thanks,
David