Adding Integration Test and the feature to add beforeRecord in delete events of event flattening with delete handling mode rewrite. Works only if the collection has ChangeStreamPreAndPostImagesOptions turned on and capture mode is *_with_pre_image (MongoDB 6.0 or later)
The Procedure for compiling the capture agent didn't show how to correctly invoke `bldrtn` as it assumed it was in the same directory as the Debezium management UDFs, which is isnt. I've added instructions for getting it on PATH and also an example later on for how to invoke SQL commands from the command line once they're already logged on. (I didn't update the following two SQL statements, as I'd assume that an intelligent viewer could learn from the first example!)
The SCN data types were previously exposed as `String` types, which is not
consumable by Grafana and Prometheus. By using `BigInteger`, we can now
make these accessible on dashboards.
Heartbeats should be sent when Debezium is not sending any events
obatined from the DB. Send heartbeat before finishing itteration
which doesn't contain any updates from the DB.
We should send heartbeats no matter if there is already any DB record
processed or not. This prevents situation when after the start there is
no new record in the Db and Debezium is not sending neither DB events
nor heartbeats.
- Implemented a dynamic solution for handling version changes in OpenTelemetry, using Java introspection to determine the correct interceptor class at runtime.
- Utilized a custom "ProducerInterceptor" to delegate logic based on the presence of specific OpenTelemetry classes.
- Removed direct usage of OpenTelemetry's internal API 'ConfigUtils'.
- Aligned solution with Debezium's aim of ensuring compatibility with Strimzi.
This update ensures a more robust handling of OpenTelemetry's version transitions.