Uploaded image for project: 'Debezium'
  1. Debezium
  2. DBZ-5925

debezium-connector-cassandra 2.1.0.Alpha2 plugin can no longer run "out of the box"

    XMLWordPrintable

Details

    Description

      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.

      Attachments

        Activity

          People

            Unassigned Unassigned
            keriharris Keri Harris (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: