|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: Debezium 3.5.0.CR1 Released |
| 4 | +date: 2026-03-26 |
| 5 | +tags: [ releases, mongodb, mysql, mariadb, postgres, sqlserver, cassandra, oracle, db2, vitess, outbox, spanner, jdbc, informix, ibmi, cockroachdb ] |
| 6 | +author: ccranfor |
| 7 | +extraClasses: release-v2 |
| 8 | +--- |
| 9 | + |
| 10 | +As we approach the finish line this quarter with the work on Debezium 3.5, we're pleased to share that the first candidate release, **3.5.0.CR1** is available. |
| 11 | +This specific release includes quite a lot of changes, including several key breaking changes that everyone should be aware of. |
| 12 | + |
| 13 | ++++<!-- more -->+++ |
| 14 | + |
| 15 | +* link:#breaking-changes[Breaking changes] |
| 16 | +* link:#new-features-and-improvements[New features and improvements] |
| 17 | +* link:#other-changes[Other changes] |
| 18 | +* link:#gsoc[Google Summer of Code] |
| 19 | + |
| 20 | +[id="breaking-changes"] |
| 21 | +== Breaking changes |
| 22 | + |
| 23 | +With any new release of software, there are often several breaking changes. |
| 24 | +This release is no exception, so let's discuss the major changes you should be aware of before upgrading to **Debezium 3.5.0.CR1**. |
| 25 | + |
| 26 | +=== Debezium Code Reorganization |
| 27 | + |
| 28 | +As the team continues to focus on new features and solutions in the portfolio, sometimes it's inevitable that code may need to be reorganized. |
| 29 | +For Debezium 3.5, contributors and developers may have noticed the renaming of the `debezium-transforms` module to `debezium-connect-plugins` (https://github.com/debezium/dbz/issues/1616[dbz#1616]). |
| 30 | + |
| 31 | +For users of Debezium's connectors, be aware that as you upgrade Debezium, be sure that you remove any existing `jar` files from your plugin directory before installing the new version. |
| 32 | +This guarantees that any code reorganization across different versions does not lead to class loader issues. |
| 33 | + |
| 34 | +For developers and contributors, be aware that your code previously directly depended on the `debezium-transforms` artifact, your build should be updated to refer to the new `debezium-connect-plugins` artifact. |
| 35 | + |
| 36 | + |
| 37 | +[id="new-features-and-improvements"] |
| 38 | +== New Features and Improvements |
| 39 | + |
| 40 | +=== Debezium for Oracle |
| 41 | + |
| 42 | +==== Improved database version resolution |
| 43 | + |
| 44 | +One pain point that the community found when moving to Oracle 23ai and 26ai was that the connector failed to resolve the database version. |
| 45 | +This arises because Oracle often changes the database banner with various releases. |
| 46 | +To address this in a more future-proof way, the Oracle connector now will use the JDBC driver's metadata to resolve the database major and minor version (https://github.com/debezium/dbz/issues/1655[dbz#1655]). |
| 47 | + |
| 48 | +=== Debezium for CockroachDB |
| 49 | + |
| 50 | +The Debezium CockroachDB connector is under active development, and now supports the ability to take incremental snapshots (https://github.com/debezium/dbz/issues/1630[dbz#1630]). |
| 51 | + |
| 52 | +For information on how to use the new feature with the CockroachDB connector, please see the project's https://github.com/debezium/debezium-connector-cockroachdb?tab=readme-ov-file#incremental-snapshots[README.md]. |
| 53 | +Formal documentation for the connector is in progress and will be provided in a future update. |
| 54 | + |
| 55 | +=== Debezium Quarkus Extensions |
| 56 | + |
| 57 | +==== Non-native compatibility for non-implemented Debezium sources |
| 58 | + |
| 59 | +One of the Debezium Quarkus Extension's goals is to provide native build solutions for Debezium's connectors. |
| 60 | +But as we begin to look at moving Debezium Server to be based on the Debezium Quarkus Extension framework, there are a number of source connectors that do not presently have native-build capabilities, and we do not want this to be a limitation. |
| 61 | + |
| 62 | +With Debezium 3.5, we have introduced a new compatibility layer that allows running Debezium source connectors that are not natively implemented in the extension framework. |
| 63 | +This provides a solid foundation not only for Debezium Server, but to running any Debezium source connector within Quarkus, as long as using non-native builds is acceptable (https://github.com/debezium/dbz/issues/1612[dbz#1612]). |
| 64 | + |
| 65 | +==== Automate Cache Invalidation with Hibernate |
| 66 | + |
| 67 | +A second-level cache, aka (L2C), and search indexes can boost an application's performance, but the information in these data stores can quickly become stale when changes are made to the data outside the scope of Hibernate ORM. |
| 68 | +Debezium can help in this gap by capturing the external changes from the transaction log and trigger a near-real-time eviction of the affected cache entries. |
| 69 | + |
| 70 | +If you have not read Gunnar's blog about https://debezium.io/blog/2018/12/05/automating-cache-invalidation-with-change-data-capture/[Automating Cache Invalidation with Change Data Capture], it provides the basis and motivation for this new feature. |
| 71 | + |
| 72 | +Debezium's new Quarkus Hibernate Cache module is a Quarkus-based solution built on top of the Debezium Quarkus Extensions, that captures change events from a Debezium source connector, and directly interacts with Hibernate's second-level cache to handle eviction seamlessly (https://github.com/debezium/dbz/issues/1522[dbz#1522]). |
| 73 | + |
| 74 | +To get started with the Debezium Quarkus Cache Invalidation module, add the following dependency to any Quarkus project: |
| 75 | + |
| 76 | +[source,xml] |
| 77 | +---- |
| 78 | +<dependency> |
| 79 | + <groupId>io.debezium</groupId> |
| 80 | + <artifactId>debezium-quarkus-hibernate-cache</artifactId> |
| 81 | + <version>3.5.0.CR1</version> |
| 82 | +</dependency> |
| 83 | +---- |
| 84 | + |
| 85 | +Inside your Quarkus `application.properties` file simply supply the necessary Quarkus Hibernate configuration for the second-level cache along with your data source information, and as database changes occur for your cached entities, they'll automatically be evicted so that on the next ORM fetch, the cache is refreshed with the latest data. |
| 86 | + |
| 87 | +=== Debezium Platform |
| 88 | + |
| 89 | +==== Connection Validation Improvements |
| 90 | + |
| 91 | +There has been a tremendous amount of work by the community lately to introduce a variety of validators for the Debezium Platform. |
| 92 | +These validators are vital to making sure that when setting up a connection, the credentials are valid, saving time by identifying problems before deployment of your connector pipeline. |
| 93 | + |
| 94 | +The following validators have been included in this release: |
| 95 | + |
| 96 | +* NATS Streaming (https://github.com/debezium/dbz/issues/1090[dbz#1090]) |
| 97 | +* Pravega (https://github.com/debezium/dbz/issues/1091[dbz#1091]) |
| 98 | +* RabbitMQ (https://github.com/debezium/dbz/issues/1093[dbz#1093]) |
| 99 | + |
| 100 | +This is just the first wave of validators, and more are planned in the not too distant future. |
| 101 | + |
| 102 | +==== Improved database tree view performance |
| 103 | + |
| 104 | +As part of our internal testing of the Debezium Platform, we identified several corner cases where specific databases or specific configurations could lead to performance issues when setting up your include/exclude lists in the user interface. |
| 105 | + |
| 106 | +To address the issue, we've moved to using a new _Virtualized TreeView_ solution that provides significantly better overall performance with large data sets and reduces the memory footprint in the browser (https://github.com/debezium/dbz/issues/1710[dbz#1710]). |
| 107 | + |
| 108 | + |
| 109 | +[id="other-changes"] |
| 110 | +== Other fixes |
| 111 | + |
| 112 | +* [postgresql-connector] nested json coming as null in modify event [DBZ-1258] (https://github.com/debezium/dbz/issues/221[dbz#221]) |
| 113 | +* [postgresql-connector] Reduce number of database connection creations during PG tests [DBZ-2028] (https://github.com/debezium/dbz/issues/301[dbz#301]) |
| 114 | +* [examples] Demo: Fail-over with MongoDB [DBZ-2107] (https://github.com/debezium/dbz/issues/315[dbz#315]) |
| 115 | +* [examples] Extract top-level example for Apicurio registry [DBZ-2789] (https://github.com/debezium/dbz/issues/391[dbz#391]) |
| 116 | +* [core-library] Debezium mapped diagnostic context doesn't work [DBZ-3750] (https://github.com/debezium/dbz/issues/486[dbz#486]) |
| 117 | +* [mysql-connector] Allow to run specific MySQL ITs with a given database [DBZ-4831] (https://github.com/debezium/dbz/issues/591[dbz#591]) |
| 118 | +* [oracle-connector] XMLType using non-Binary storage throws parser failure [DBZ-9228] (https://github.com/debezium/dbz/issues/1373[dbz#1373]) |
| 119 | +* [oracle-connector] Savepoint (Partial) rollback not handled correctly for tables with LOB columns [DBZ-9615] (https://github.com/debezium/dbz/issues/1422[dbz#1422]) |
| 120 | +* Implement REST API for serving component descriptors (https://github.com/debezium/dbz/issues/1547[dbz#1547]) |
| 121 | +* Configure Helm chart for descriptor OCI artifact mounting (https://github.com/debezium/dbz/issues/1548[dbz#1548]) |
| 122 | +* [core-library] Resolve circular dependency between debezium-generator-plugin and debezium-core (https://github.com/debezium/dbz/issues/1617[dbz#1617]) |
| 123 | +* Signal-based incremental snapshots (https://github.com/debezium/dbz/issues/1630[dbz#1630]) |
| 124 | +* [build-infrastructure] Add maven repo artifact size check (https://github.com/debezium/dbz/issues/1667[dbz#1667]) |
| 125 | +* [core-library] HeaderToValue nested headers do not work (https://github.com/debezium/dbz/issues/1669[dbz#1669]) |
| 126 | +* [postgresql-connector] PgOutputMessageDecoder corrupts multi-byte UTF-8 table/column names during CDC streaming (https://github.com/debezium/dbz/issues/1682[dbz#1682]) |
| 127 | +* [postgresql-connector] PostgreSQL: Connector startup is very slow with many custom types and network latency (https://github.com/debezium/dbz/issues/1683[dbz#1683]) |
| 128 | +* [core-library, mysql-connector] MYSQL CDC | Table name blank space issue (https://github.com/debezium/dbz/issues/1687[dbz#1687]) |
| 129 | +* [ibmi-connector] Skip sleeps between journal entry fetches (https://github.com/debezium/dbz/issues/1688[dbz#1688]) |
| 130 | +* [db2-connector] Db2ChunkedSnapshotIT is unstable (https://github.com/debezium/dbz/issues/1692[dbz#1692]) |
| 131 | +* [debezium-server] Create test-jar for debezium-server-core (https://github.com/debezium/dbz/issues/1696[dbz#1696]) |
| 132 | +* [build-infrastructure] Add PULL_REQUEST_TEMPLATE.md to guide contributors on DCO sign-off and issue linking (https://github.com/debezium/dbz/issues/1697[dbz#1697]) |
| 133 | +* [core-library, debezium-platform] Support component discoverability via ConfigDescriptor interface (https://github.com/debezium/dbz/issues/1698[dbz#1698]) |
| 134 | +* [debezium-operator] Missing some Helm chart releases for debezium-operator (https://github.com/debezium/dbz/issues/1700[dbz#1700]) |
| 135 | +* Add `net_write_timeout` and `net_read_timeout` configuration options to MySQL BinaryLogClient (https://github.com/debezium/dbz/issues/1701[dbz#1701]) |
| 136 | +* [informix-connector] Informix connector DELETE does not unwatch properly (https://github.com/debezium/dbz/issues/1704[dbz#1704]) |
| 137 | +* [build-infrastructure] Ensure spaces are used for indentation in XML files [DBZ-275] (https://github.com/debezium/dbz/issues/1706[dbz#1706]) |
| 138 | +* [build-infrastructure] DBZ-275: Ensure spaces are used for indentation in XML files (https://github.com/debezium/dbz/issues/1707[dbz#1707]) |
| 139 | +* [mongodb-connector] Fix MongoDB connector crash loop when snapshot is interrupted (https://github.com/debezium/dbz/issues/1708[dbz#1708]) |
| 140 | +* [ingres-connector] Integrate debezium-connector-ingres in Java Quality Outreach, PR and Push GitHub Workflows (https://github.com/debezium/dbz/issues/1714[dbz#1714]) |
| 141 | +* [sqlserver-connector] SQL Server connector with initial_only snapshot mode gets stuck in infinite retry loop when database name is invalid (https://github.com/debezium/dbz/issues/1717[dbz#1717]) |
| 142 | +* [test-infrastructure] Remove insights from docker rhel_kafka images (https://github.com/debezium/dbz/issues/1720[dbz#1720]) |
| 143 | +* [core-library] Duplicate END records of a transaction (https://github.com/debezium/dbz/issues/1724[dbz#1724]) |
| 144 | +* [documentation, oracle-connector] XStream user reports insufficient privileges during snapshot for table locks (https://github.com/debezium/dbz/issues/1733[dbz#1733]) |
| 145 | + |
| 146 | + |
| 147 | +In total, https://github.com/orgs/debezium/projects/5/views/6?query=sort%3Aupdated-desc+is%3Aopen&filterQuery=status%3AReleased+iteration%3A3.5.0.CR1[41 issues] were resolved in Debezium 3.5.0.CR1. |
| 148 | +The list of changes can also be found in our link:/releases/3.5/release-notes#release-3.5.0-CR1[release notes]. |
| 149 | + |
| 150 | +A big thank you to all the contributors from the community who worked diligently on this release: |
| 151 | + + |
| 152 | +https://github.com/AlvarVG[Alvar Viana], |
| 153 | +https://github.com/AlvarVG[Alvar Viana Gomez], |
| 154 | +https://github.com/gmarav05[Aravind], |
| 155 | +https://github.com/atorik[Atsushi Torikoshi], |
| 156 | +https://github.com/b-goyal[Bhagyashree Goyal], |
| 157 | +https://github.com/Binayak490-cyber[Binayak Das], |
| 158 | +https://github.com/Naros[Chris Cranford], |
| 159 | +https://github.com/div-dev123[Divyansh Agrawal], |
| 160 | +https://github.com/d1vyanshu-kumar[Divyanshu Kumar], |
| 161 | +https://github.com/jpechane[Jiri Pechanec], |
| 162 | +https://github.com/kartikangiras[Kartik Angiras], |
| 163 | +https://github.com/nrkljo[Lars M. Johansson], |
| 164 | +https://github.com/mfvitale[Mario Fiore Vitale], |
| 165 | +https://github.com/msillence[martin], |
| 166 | +https://github.com/nkokitkar[Nikita Kokitkar], |
| 167 | +https://github.com/roldanbob[Robert Roldan], |
| 168 | +https://github.com/sonagaras[Sarthak Sonagara], |
| 169 | +https://github.com/kinolaev[Sergei Nikolaev], |
| 170 | +https://github.com/twthorn[Thomas Thornton], |
| 171 | +https://github.com/vsantonastaso[Vincenzo Santonastaso], |
| 172 | +https://github.com/viragtripathi[Virag Tripathi], |
| 173 | +https://github.com/vjuranek[Vojtech Juranek], |
| 174 | +https://github.com/zahid75[Zahid Iqbal] |
| 175 | + |
| 176 | +[id="gsoc"] |
| 177 | +== Google Summer of Code |
| 178 | + |
| 179 | +The entire Debezium core team would like to take a moment to thank this year's Google Summer of Code contributors. |
| 180 | +For those who may be active on Zulip or watch our repositories, you've likely seen a lot of recent activity from them, and each of them have done an excellent job taking our backlog of `good-first-issue` tasks to reality. |
| 181 | + |
| 182 | +Over the coming months, some of them may have an opportunity to work on some really cool new features for Debezium. |
| 183 | +Once the selection process concludes and project proposals are accepted, we'll share with the broader community what amazing tasks they will be working on over the next ~12 weeks. |
| 184 | + |
| 185 | +So again, thank you all for your contributions and we are eagerly waiting to read those proposals! |
0 commit comments