I am excited to announce the release of Debezium 2.0.0.CR1!
This release contains breaking changes, stability fixes, and bug fixes, all to inch us closer to 2.0.0.Final. Overall, this release contains a total of 53 issues that were fixed.
If you intend to upgrade to 2.0.0.CR1, we strongly recommend that you read the release notes before the upgrade to understand all breaking changes. There was one noteworthy breaking changes with the 2.0.0.CR1 release:
Behavior of schema.name.adjustment.mode has changed
The schema.name.adjustment.mode
configuration property controls how schema names should be adjusted for compatibility with the message converter used by the connector. This configuration option can be one of two values:
avro
-
Repliaces the characters that cannot be used in the Avro type name with an underscore.
none
-
Does not adjust the names, even when non-Avro compliant characters are detected.
In prior releases, Debezium always defaulted to the safe value of avro
; however, starting with Debezium 2.0.0.CR1 the default value will now be none
. We believe that given that the use of Avro serialization is something opted in by users based on their needs, this option should align with the same opt-in behavior.
The safe upgrade path would be to adjust your configuration and explicitly use schema.name.adjustment.mode
as avro
and use the default for new connector deployments. But you can also review your topic names and configurations, checking that no underscore substitutions are happening and ergo this change will have no impact.
MongoDB 6.0 - before state support
MongoDB 6 supports capturing the state of the document before the change is applied. This has long since been a feature that has been available only to the relational-based connectors, but this now enables Debezium to also include the before
field as part of the event’s payload for MongoDB.
To enable this new MongoDB 6+ behavior, the capture.mode
setting has been adjusted to include two new values:
change_streams_with_pre_image
-
The change event will also contain the full document from before the change as well as the final state of the document fields that were changed as a part of the change event.
change_streams_update_full_with_pre_image
-
When an update occurs, not only will the full document be present to represent the current state after the update, but the event will also contain the full document from before the change as well.
The MongoDB |
Other fixes & improvements
There are many bugfixes and stability changes in this release, some noteworthy are:
-
Implement retries for Debezium embedded engine DBZ-4629
-
Traditional snapshot process setting source.ts_ms DBZ-5591
-
Upgrade Kafka client to 3.3.1 DBZ-5600
-
Support READ ONLY/ENCRYPTION options for alter database statment DBZ-5622
-
Clarify semantics of include/exclude options DBZ-5625
-
Added support for Mongo pre-image in change stream DBZ-5628
-
Support for using any expression in kill statements DBZ-5636
-
Debezium Db2 Connector fails to handle default values in schema when is making the snapshot DBZ-4990
-
Oracle connector parsing SELECT_LOB_LOCATOR event missing constant
unavailable.value.placeholder
DBZ-5581 -
Starting Embedded Engine swallows ClassNotFoundException so user cannot see why engine does not work https://issues.redhat.com/browse/DBZ-5583[DBZ-558
-
Hardcoded driver task properties are not being passed to underlying connections DBZ-5670
-
MongoDB Connector with DocumentDB errors with "{$natural: -1} is not supported" DBZ-5677
-
Upgrade apicurio to 2.2.5.Final DBZ-5549
-
Upgrade binary log client to 0.27.2 DBZ-5620
Altogether, a total of 53 issues were fixed for this release.
A big thank you to all the contributors from the community who worked on this release: Alexander Schwartz, Gabor Andras, Avinash Vishwakarma, Bin Huang, Bob Roldan, Chris Cranford, Ezer Karavani, Gabor Andras, Harvey Yue, Ismail Simsek, Jaromir Hamala, Jeremy Ford, Jiri Pechanec, Nir Levy, Rajendra Dangwal, Sage Pierce, Sergei Morozov, Vojtech Juranek, Xinbin Huang, and moustapha mahfoud!
What’s next?
With the release of Debezium 2.0 CR1, the release of 2.0.0.Final is just around the corner. The community should expect the Final release soon, barring any bug reports. In addition, we are also working on wrapping up the last installation of the 1.9 release stream, 1.9.7.Final which should will be released toward the end of this month.
With the holiday season fast approaching, we will soon begin work on Debezium 2.1. We do intend to have a normal release cycle this quarter despite being behind on Debezium 2.0, so expect that sometime just before the end of the year.
In the meantime, happy capturing!
About Debezium
Debezium is an open source distributed platform that turns your existing databases into event streams, so applications can see and respond almost instantly to each committed row-level change in the databases. Debezium is built on top of Kafka and provides Kafka Connect compatible connectors that monitor specific database management systems. Debezium records the history of data changes in Kafka logs, so your application can be stopped and restarted at any time and can easily consume all of the events it missed while it was not running, ensuring that all events are processed correctly and completely. Debezium is open source under the Apache License, Version 2.0.
Get involved
We hope you find Debezium interesting and useful, and want to give it a try. Follow us on Twitter @debezium, chat with us on Zulip, or join our mailing list to talk with the community. All of the code is open source on GitHub, so build the code locally and help us improve ours existing connectors and add even more connectors. If you find problems or have ideas how we can improve Debezium, please let us know or log an issue.