Problem Description
When the Aerospike Kafka Inbound Connector is updated to version 2.2 or higher, the update fails with the following error. The class exists on the system.
java.lang.NoClassDefFoundError:
io/confluent/kafka/schemaregistry/client/SchemaRegistryClient
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:398)
at org.apache.kafka.common.config.ConfigDef.parseType(ConfigDef.java:720)
at org.apache.kafka.common.config.ConfigDef.parseValue(ConfigDef.java:475)
at org.apache.kafka.common.config.ConfigDef.parse(ConfigDef.java:468)
at org.apache.kafka.common.config.AbstractConfig.<init>(AbstractConfig.java:108)
at org.apache.kafka.common.config.AbstractConfig.<init>(AbstractConfig.java:129)
Explanation
From version 2.2 of the Inbound Connector the Avro converter was removed from the release. The converter had previously been present in the release artifact but was an unused dependency (unless if specified as a converter in the configuration). The Aerospike connector is converter agnostic as per convention. Any converter dependency should be setup external to the connector.Solution
The JAR containing the AvroConverter needs to be available in one of the directories that is listed on the Connect worker'splugin.path configuration properties.Notes
- Converters are used to deserialize data stored in Kafka.
- The Aerospike sink connector is agnostic to the format of the data stored in Kafka, and can work with different formats by plugging in different converters. Refer to the Kafka Connect Converters Serialization Explained documentation for details on those converters.
- Some other useful links: