Debezium 3.2.4.Final is now available with important fixes for Oracle connector users and stability improvements across multiple database connectors.

In this post, we’re going to take a deep dive into the improvements made across several key modules of Debezium, discussing any new features, and explaining any changes that could impact your upgrade process. As always, we recommend you read the release notes to learn about all the bugs that were fixed, update procedures, and more.

Breaking changes

With any new release of software, there is often several breaking changes. This release is no exception, so let’s discuss the major changes you should be aware of before upgrading to Debezium 3.2.4.Final.

Db2 Offset position validation is unreliable

Due to reliability issues with offset position validation in Db2, we’ve temporarily disabled validation to prevent false failures (DBZ-9470). As a result, the when_needed snapshot mode is currently unavailable for Db2 connectors.

Impact: If you’re using when_needed snapshot mode with Db2, you will need to use an alternative mode until this limitation is resolved in a future release.

New features and improvements

Let’s cover some noteworthy improvements and changes in 3.2.4.Final.

Oracle events mistakenly skipped

We introduced DBZ-8060 in Debezium 3.2.3.Final which unfortunately introduced a regression for users who enable LOB capture support for the Oracle connector. This regression lead to situations where the connector would report that parts of transactions were being skipped. Thanks to the swift action of the Debezium community, this regression was reported and fixed in Debezium 3.2.4.Final (DBZ-9521).

For Oracle users, it’s important if you are upgrading, please avoid the use of 3.2.3.Final and consider moving to 3.2.4.Final if you intend to use Debezium 3.2.

Oracle XStream no longer flushes invalid low watermarks

The Debezium Oracle XStream implementation must periodically flush an LCR position to the Oracle Outbound Server. This flush acts as a hint to Oracle that all changes prior to that position have been processed, similar to how PostgreSQL confirms LSNs to a replication slot.

Previously, due to the way offset flushing was handled, the Oracle Outbound Server could incorrectly report a failure when attempting to flush the low watermark, treating a valid position as invalid. This issue has now been fixed, and the Oracle Outbound Server will no longer falsely report invalid low-watermark positions (DBZ-8923).

Other fixes

  • Dropping in process batch transactions when shutting down DBZ-8060

  • A transaction mined across two queries can randomly cause unsupported operations DBZ-8747

  • Oracle connector reselect exception handling (ORA-01555 + ORA-22924) DBZ-9446

  • OutOfMemory exception when recreating list of tables for snapshot callables DBZ-9472

  • Debezium Server raise "AttributeNotFoundException QueueTotalCapacity" with SqlServer source DBZ-9477

  • Getting "Unknown column in 'field list'" when column name contains backtick DBZ-9479

  • MySQL Event get header throws NullPointerException DBZ-9483

  • MySQL example container images are not properly configured DBZ-9485

  • Dropping primary key does not change Oracle relational metadata DBZ-9505

In total, 15 issues were resolved in Debezium 3.2.4.Final. The list of changes can also be found in our release notes.

A big thank you to all the contributors from the community who worked diligently on this release:
Alvar Viana Gomez, Alvar Viana, Chris Cranford, Guangnan Shi, Jiri Pechanec, Mario Fiore Vitale, René Kerner, Robert Roldan, Sergei Nikolaev, Vojtech Juranek, and leoloel!

Chris Cranford

Chris is a software engineer at IBM and formerly Red Hat where he works on Debezium and deepens his expertise in all things Oracle and Change Data Capture on a daily basis. He previously worked on Hibernate, the leading open-source JPA persistence framework, and continues to contribute to Quarkus. Chris is based in North Carolina, United States.

   


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.

Copyright © Debezium and it's authors. All Rights Reserved. For details on our trademarks, please visit our Trademark Policy and Trademark List. Trademarks of third parties are owned by their respective holders and their mention here does not suggest any endorsement or association.
×