THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
- New library or interface: creating a separate library like
connect-reporter
will cause redundancy in configuration, and creating any new interface or API will limit backwards compatibility. Deploying a connector on an old version of connect will not be a seamless integration with the introduction of a new interface - Exposing
ErrorReporter
andProcessingContext
as public APIs: the main issue with this design is that the the API exposes packages withruntime
in them and package names cannot be changed. - Labeling as a dead letter queue: this is too specific of a label; using error reporter creates a more general contract of use case
- Batch error reporting: this would introduce the need for keeping track of order, and the increase in throughput doesn't seem to outweigh the added complication
- Creating a setter method in
SinkTask
that accepts an error reporter object: while this allows for backwards compatibility, it doesn't follow previous patterns of adding these types of methods toSinkTaskContext
and is not a very aesthetic addition to the interface - Creating an overloaded
put(...)
method that accepts an error reporter object and deprecating the originalput(...)
method: deprecating the original method can cause confusion on which method to implement and if the wrong method is implemented, it can cause backwards compatibility issues - Synchronous-only functionality: this limits developer control on functionality and traditionally a lot of functionality within Kafka Connect has had asynchronous functionality
- Using
Callback
rather thanFuture
: because a sink task's callback is called from the producer thread, it can risk a poorly written sink task callback killing the reporter's producer without necessarily failing the task