Compatibility shim library
C0urante opened this issue · 0 comments
It's difficult to determine whether some features of the Kafka Connect API are supported by the runtime into which a plugin (e.g., connector, converter, etc.) is deployed. Some features can be detected implicitly based on which methods the runtime invokes on the plugin (such as whether SinkTask::preCommit or SinkTask::flush is invoked), and others can be detected by catching runtime classloading errors (such as those thrown by SinkTaskContext::errantRecordReporter).
This is both inconvenient (catching classloading errors is never fun) and limiting (it's impossible to leverage interfaces introduced in newer APIs with default implementations that make sense in the absence of support for that feature by the Kafka Connect runtime, and there are limited options for when exactly support or lack of support for a given feature can be determined).
We can implement a compatibility shim library that eases some of these pain points and covers up some of the uglier bits for connector developers who want to access newer features in their connectors without sacrificing compatibility with older versions of Kafka Connect.