-
Bug
-
Resolution: Done
-
Major
-
None
-
None
-
False
-
None
-
False
Versions of the debezium-connector-cassandra downloadable plugin prior to version 2.1.0.Alpha2 included a sufficient number of dependencies in the tar.gz archive so that it could be downloaded and run standalone without (too much) trouble.
For example:
$ wget https://repo1.maven.org/.../debezium-connector-cassandra-4-2.1.0.Alpha1-plugin.tar.gz $ tar xvzf debezium-connector-cassandra-4-2.1.0.Alpha1-plugin.tar.gz $ cd debezium-connector-cassandra-4 $ wget https://repo1.maven.org/.../jackson-databind-2.13.3.jar $ wget https://repo1.maven.org/.../jackson-core-2.13.3.jar $ wget wget https://.../jackson-annotations-2.13.3.jar $ java -cp './*' --add-exports ... --add-opens ... io.debezium.connector.cassandra.CassandraConnectorTask /path/to/config.file 12:42:22.984 [main] INFO io.debezium.connector.cassandra.CassandraConnectorTaskTemplate - Initializing Cassandra connector task context ...
DBZ 2098 introduced a valuable change so that the Cassandra plugin can now be run via the Debezium Server. I believe this change required a slimmed down plugin be created. However the change also comes at the cost of making the plugin difficult to use "out of the box". There are now significantly less dependencies included in the 2.1.0.Alpha2 version of the Cassandra plugin tarball. Comparing 2.1.0.Alpha1 with 2.1.0.Alpha2:
--- debezium-connector-cassandra-2.1.0.Alpha1.txt 2022-12-10 12:22:43.464456638 +0100 +++ debezium-connector-cassandra-2.1.0.Alpha2.txt 2022-12-10 12:22:50.112521270 +0100 @@ -1,46 +1,27 @@ -debezium-connector-cassandra-2.1.0.Alpha1 +debezium-connector-cassandra-2.1.0.Alpha2 airline-0.8.jar -animal-sniffer-annotations-1.14.jar -annotations-13.0.jar antlr-runtime-3.5.2.jar asm-7.1.jar asm-analysis-9.1.jar asm-commons-9.1.jar asm-tree-9.1.jar asm-util-9.1.jar -avro-1.10.1.jar -caffeine-2.5.6.jar cassandra-all-4.0.2.jar -checker-compat-qual-2.0.0.jar chronicle-bytes-2.20.111.jar chronicle-core-2.20.126.jar chronicle-queue-5.20.123.jar chronicle-threads-2.20.111.jar chronicle-wire-2.20.117.jar commons-cli-1.1.jar -commons-codec-1.9.jar -commons-compress-1.21.jar -commons-lang3-3.11.jar commons-math3-3.2.jar -common-utils-7.0.1.jar concurrent-trees-2.4.0.jar config-1.4.1.jar -connect-api-3.3.1.jar -connect-json-3.3.1.jar -debezium-api-2.1.0.Alpha1.jar -debezium-connector-cassandra-4-2.1.0.Alpha1.jar -debezium-connector-cassandra-core-2.1.0.Alpha1.jar -debezium-core-2.1.0.Alpha1.jar +debezium-connector-cassandra-4-2.1.0.Alpha2.jar +debezium-connector-cassandra-core-2.1.0.Alpha2.jar ecj-4.6.1.jar -error_prone_annotations-2.1.3.jar -gson-2.8.6.jar -guava-24.1.1-jre.jar HdrHistogram-2.1.9.jar high-scale-lib-1.0.6.jar hppc-0.8.1.jar -j2objc-annotations-1.3.jar -jackson-dataformat-yaml-2.13.3.jar -jackson-datatype-jdk8-2.13.3.jar jamm-0.3.2.jar java-cup-runtime-11b-20160615.jar java-driver-core-shaded-4.14.0.jar @@ -48,11 +29,8 @@ java-driver-shaded-guava-25.1-jre-graal-sub-1.jar javax.inject-1.jar javax.servlet-api-3.1.0.jar -javax.ws.rs-api-2.1.1.jar jbcrypt-0.4.jar -jcip-annotations-1.0-1.jar jcl-over-slf4j-1.7.25.jar -jcommander-1.30.jar jctools-core-3.1.0.jar jetty-http-9.4.12.v20180830.jar jetty-io-9.4.12.v20180830.jar @@ -69,26 +47,9 @@ jnr-ffi-2.2.2.jar jnr-posix-3.1.5.jar jnr-x86asm-1.0.2.jar -joda-time-2.10.1.jar json-simple-1.1.jar -jsr305-1.3.9.jar jvm-attach-api-1.5.jar -kafka-avro-serializer-7.0.1.jar -kafka-clients-3.3.1.jar -kafka-connect-avro-converter-7.0.1.jar -kafka-connect-avro-data-7.0.1.jar -kafka-connect-protobuf-converter-7.0.1.jar -kafka-protobuf-provider-7.0.1.jar -kafka-protobuf-serializer-7.0.1.jar -kafka-protobuf-types-7.0.1.jar -kafka-schema-registry-client-7.0.1.jar -kafka-schema-serializer-7.0.1.jar -kotlin-stdlib-1.4.21.jar -kotlin-stdlib-common-1.4.10.jar LICENSE.txt -logback-classic-1.2.10.jar -logback-core-1.2.10.jar -lz4-java-1.8.0.jar metrics-core-4.0.1.jar metrics-healthchecks-4.0.1.jar metrics-jmx-4.0.1.jar @@ -98,17 +59,10 @@ metrics-servlets-4.0.1.jar mxdump-0.14.jar native-protocol-1.5.1.jar -netty-all-4.1.58.Final.jar -netty-tcnative-boringssl-static-2.0.36.Final.jar ohc-core-0.5.1.jar ohc-core-j8-0.5.1.jar -okio-2.8.0.jar profiler-1.0.2.jar -protobuf-java-3.19.6.jar -protobuf-java-util-3.17.3.jar -proto-google-common-protos-1.17.0.jar psjava-0.1.19.jar -reactive-streams-1.0.3.jar README.md reporter-config3-3.0.3.jar reporter-config-base-3.0.3.jar @@ -117,16 +71,8 @@ sjk-core-0.14.jar sjk-json-0.14.jar sjk-stacktrace-0.14.jar -slf4j-api-1.7.36.jar snakeyaml-1.26.jar -snappy-java-1.1.2.6.jar snowball-stemmer-1.3.0.581.1.jar spotbugs-annotations-3.1.12.jar ST4-4.0.8.jar stream-2.5.2.jar -swagger-annotations-1.6.2.jar -swagger-core-1.6.2.jar -swagger-models-1.6.2.jar -wire-runtime-3.7.1.jar -wire-schema-3.7.1.jar -zstd-jni-1.5.0-4.jar
Not having these dependencies readily available makes it hard to use the Cassandra plugin without manually downloading and assembling all the dependencies, or compiling a wrapper that pulls in the missing dependencies. Both options are a hurdle for someone wanting to try out the plugin.
One possible fix is to publish both slim and fat versions of the plugin tarballs. Although with separate plugins already for v3 and v4 of Cassandra, this feels like we'd end up with too many published artifacts for one database.
Another possibility is to include an "extra deps" directory in the released plugin tarball containing all the missing dependencies.