Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion _data/releases/3.5/3.5.0.CR1.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ date: 2026-03-24
version: "3.5.0.CR1"
stable: false
summary: debezium-core module split; Cache invalidation with Quarkus Extensions; Quarkus compatibility mode for external connectors support; Incremental snapshots in CockroachDB; Multiple connection validators in Debezium Platform; Configurable scaling of LogMiner batch window
#announcement_url:
announcement_url: /blog/2026/03/26/debezium-3-5-cr1-released/
216 changes: 216 additions & 0 deletions _posts/2026-03-26-debezium-3-5-cr1-released.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,216 @@
---
layout: post
title: Debezium 3.5.0.CR1 Released
date: 2026-03-26
tags: [ releases, mongodb, mysql, mariadb, postgres, sqlserver, cassandra, oracle, db2, vitess, outbox, spanner, jdbc, informix, ibmi, cockroachdb ]
author: ccranfor
extraClasses: release-v2
---

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.
This specific release includes quite a lot of changes, including several key breaking changes that everyone should be aware of.

+++<!-- more -->+++

* link:#breaking-changes[Breaking changes]
* link:#new-features-and-improvements[New features and improvements]
* link:#other-changes[Other changes]
* link:#gsoc[Google Summer of Code]

[id="breaking-changes"]
== Breaking changes

With any new release of software, there are 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.5.0.CR1**.

=== Debezium Code Reorganization
Comment thread
Naros marked this conversation as resolved.

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.
For Debezium 3.5, contributors and developers may have noticed the removal of `debezium-core` and other modules (https://github.com/debezium/dbz/issues/1616[dbz#1616]).

The `debezium-core` dependency has been split into two independent components:

`debezium-config`::
Contains all of Debezium's _Configuration_ and _Component_ classes.

`debezium-connector-common`::
Contains all the remaining clases that were previously in `debezium-core`.

For developers and contributors, be aware that if your code previously directly depended on the following artifacts, they were renamed:

* `debezium-transforms` is now `debezium-connect-plugins`
* `debezium-common` is now `debezium-util`

[CAUTION]
====
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.
This guarantees that any code reorganization across different versions does not lead to class loader issues.
====

[id="new-features-and-improvements"]
== New Features and Improvements

=== Debezium for Oracle

==== Improved database version resolution

One pain point that the community found when moving to Oracle 23ai and 26ai was that the connector failed to resolve the database version.
This arises because Oracle often changes the database banner with various releases.
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]).

=== Debezium for CockroachDB

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]).

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].
Formal documentation for the connector is in progress and will be provided in a future update.

=== Debezium Quarkus Extensions

==== Non-native compatibility for non-implemented Debezium sources

One of the Debezium Quarkus Extension's goals is to provide native build solutions for Debezium's connectors.
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.

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.
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]).
Comment thread
Naros marked this conversation as resolved.

For example, in a Quarkus application to use the Debezium Informix connector, which currently does not have a native build option, you would add the following dependencies:

[source,xml]
----
<!-- add the Debezium Quarkus Engine -->
<dependency>
<groupId>io.debezium</groupId>
<artifactId>debezium-quarkus-engine</artifactId>
</dependency>

<!-- add the Debezium-ready Connector for your datasource -->
<dependency>
<groupId>io.debezium</groupId>
<artifactId>debezium-connector-informix</artifactId>
</dependency>
----

==== Automate Cache Invalidation with Hibernate

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.
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.

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.

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]).

To get started with the Debezium Quarkus Cache Invalidation module, add the following dependency to any Quarkus project:

[source,xml]
----
<dependency>
<groupId>io.debezium</groupId>
<artifactId>debezium-quarkus-hibernate-cache</artifactId>
<version>3.5.0.CR1</version>
</dependency>
----

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.

=== Debezium Platform

==== Connection Validation Improvements

There has been a tremendous amount of work by the community lately to introduce a variety of validators for the Debezium Platform.
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.

The following validators have been included in this release:

* NATS Streaming (https://github.com/debezium/dbz/issues/1090[dbz#1090])
* Pravega (https://github.com/debezium/dbz/issues/1091[dbz#1091])
* RabbitMQ (https://github.com/debezium/dbz/issues/1093[dbz#1093])

This is just the first wave of validators, and more are planned in the not too distant future.

==== Improved database tree view performance

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.

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]).


[id="other-changes"]
== Other fixes

* nested json coming as null in modify event [DBZ-1258] (https://github.com/debezium/dbz/issues/221[dbz#221])
* Reduce number of database connection creations during PG tests [DBZ-2028] (https://github.com/debezium/dbz/issues/301[dbz#301])
* Demo: Fail-over with MongoDB [DBZ-2107] (https://github.com/debezium/dbz/issues/315[dbz#315])
* Extract top-level example for Apicurio registry [DBZ-2789] (https://github.com/debezium/dbz/issues/391[dbz#391])
* Debezium mapped diagnostic context doesn't work [DBZ-3750] (https://github.com/debezium/dbz/issues/486[dbz#486])
* Allow to run specific MySQL ITs with a given database [DBZ-4831] (https://github.com/debezium/dbz/issues/591[dbz#591])
* XMLType using non-Binary storage throws parser failure [DBZ-9228] (https://github.com/debezium/dbz/issues/1373[dbz#1373])
* Savepoint (Partial) rollback not handled correctly for tables with LOB columns [DBZ-9615] (https://github.com/debezium/dbz/issues/1422[dbz#1422])
* Implement REST API for serving component descriptors (https://github.com/debezium/dbz/issues/1547[dbz#1547])
* Configure Helm chart for descriptor OCI artifact mounting (https://github.com/debezium/dbz/issues/1548[dbz#1548])
* Resolve circular dependency between debezium-generator-plugin and debezium-core (https://github.com/debezium/dbz/issues/1617[dbz#1617])
* Signal-based incremental snapshots (https://github.com/debezium/dbz/issues/1630[dbz#1630])
* Add maven repo artifact size check (https://github.com/debezium/dbz/issues/1667[dbz#1667])
* HeaderToValue nested headers do not work (https://github.com/debezium/dbz/issues/1669[dbz#1669])
* PgOutputMessageDecoder corrupts multi-byte UTF-8 table/column names during CDC streaming (https://github.com/debezium/dbz/issues/1682[dbz#1682])
* PostgreSQL: Connector startup is very slow with many custom types and network latency (https://github.com/debezium/dbz/issues/1683[dbz#1683])
* MYSQL CDC | Table name blank space issue (https://github.com/debezium/dbz/issues/1687[dbz#1687])
* Skip sleeps between journal entry fetches (https://github.com/debezium/dbz/issues/1688[dbz#1688])
* Db2ChunkedSnapshotIT is unstable (https://github.com/debezium/dbz/issues/1692[dbz#1692])
* Create test-jar for debezium-server-core (https://github.com/debezium/dbz/issues/1696[dbz#1696])
* Add PULL_REQUEST_TEMPLATE.md to guide contributors on DCO sign-off and issue linking (https://github.com/debezium/dbz/issues/1697[dbz#1697])
* Support component discoverability via ConfigDescriptor interface (https://github.com/debezium/dbz/issues/1698[dbz#1698])
* Missing some Helm chart releases for debezium-operator (https://github.com/debezium/dbz/issues/1700[dbz#1700])
* Add `net_write_timeout` and `net_read_timeout` configuration options to MySQL BinaryLogClient (https://github.com/debezium/dbz/issues/1701[dbz#1701])
* Informix connector DELETE does not unwatch properly (https://github.com/debezium/dbz/issues/1704[dbz#1704])
* Ensure spaces are used for indentation in XML files [DBZ-275] (https://github.com/debezium/dbz/issues/1706[dbz#1706])
* DBZ-275: Ensure spaces are used for indentation in XML files (https://github.com/debezium/dbz/issues/1707[dbz#1707])
* Fix MongoDB connector crash loop when snapshot is interrupted (https://github.com/debezium/dbz/issues/1708[dbz#1708])
* Integrate debezium-connector-ingres in Java Quality Outreach, PR and Push GitHub Workflows (https://github.com/debezium/dbz/issues/1714[dbz#1714])
* 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])
* Remove insights from docker rhel_kafka images (https://github.com/debezium/dbz/issues/1720[dbz#1720])
* Duplicate END records of a transaction (https://github.com/debezium/dbz/issues/1724[dbz#1724])
* XStream user reports insufficient privileges during snapshot for table locks (https://github.com/debezium/dbz/issues/1733[dbz#1733])


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.
Comment thread
kmos marked this conversation as resolved.
The list of changes can also be found in our link:/releases/3.5/release-notes#release-3.5.0-CR1[release notes].

A big thank you to all the contributors from the community who worked diligently on this release:
+
https://github.com/AlvarVG[Alvar Viana],
https://github.com/AlvarVG[Alvar Viana Gomez],
https://github.com/gmarav05[Aravind],
https://github.com/atorik[Atsushi Torikoshi],
https://github.com/b-goyal[Bhagyashree Goyal],
https://github.com/Binayak490-cyber[Binayak Das],
https://github.com/Naros[Chris Cranford],
https://github.com/div-dev123[Divyansh Agrawal],
https://github.com/d1vyanshu-kumar[Divyanshu Kumar],
https://github.com/kmos[Giovanni Panice],
https://github.com/jpechane[Jiri Pechanec],
https://github.com/kartikangiras[Kartik Angiras],
https://github.com/nrkljo[Lars M. Johansson],
https://github.com/mfvitale[Mario Fiore Vitale],
https://github.com/msillence[martin],
https://github.com/nkokitkar[Nikita Kokitkar],
https://github.com/roldanbob[Robert Roldan],
https://github.com/sonagaras[Sarthak Sonagara],
https://github.com/kinolaev[Sergei Nikolaev],
https://github.com/twthorn[Thomas Thornton],
https://github.com/vsantonastaso[Vincenzo Santonastaso],
https://github.com/viragtripathi[Virag Tripathi],
https://github.com/vjuranek[Vojtech Juranek],
https://github.com/zahid75[Zahid Iqbal]

[id="gsoc"]
== Google Summer of Code

The entire Debezium core team would like to take a moment to thank this year's Google Summer of Code contributors.
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.

Over the coming months, some of them may have an opportunity to work on some really cool new features for Debezium.
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.

So again, thank you all for your contributions and we are eagerly waiting to read those proposals!
Loading