Skip to content

Commit

Permalink
3.0.0.CR2 announcement
Browse files Browse the repository at this point in the history
  • Loading branch information
Naros committed Sep 25, 2024
1 parent 66c181e commit a3a28c4
Show file tree
Hide file tree
Showing 2 changed files with 112 additions and 1 deletion.
2 changes: 1 addition & 1 deletion _data/releases/3.0/3.0.0.CR2.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ date: 2024-09-30
version: "3.0.0.CR2"
stable: false
summary: Configurable isolation level for PostgreSQL snapshot; Support for `EXTENDED` strings in Oracle LogMiner connector; Support for `EMPTY_BLOB()` default value in Oracle connector; Faster OOTB configuration for Debezium Engine; Predictable selection of Debezium Engine implementation; Upgrade of Oracle driver to ojdbc11; Debezium containers are based on Fedora 40
#announcement_url:
announcement_url: /blog/2024/09/25/debezium-3-0-cr2-released/
111 changes: 111 additions & 0 deletions _posts/2024-09-25-debezium-3-0-cr2-released.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
---
layout: post
title: Debezium 3.0.0.CR2 Released
date: 2024-09-25
tags: [ releases, mongodb, mysql, mariadb, postgres, sqlserver, cassandra, oracle, db2, vitess, outbox, spanner, jdbc, informix, ibmi ]
author: ccranfor
---

As I mentioned last week, we are in the homestretch for the next major release.
We're happy to announce the next candidate release, Debezium *3.0.0.CR2*!.
Let's take a quick look at the changes and improvements in this new release...

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

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

Debezium 3.0.0.CR2 introduces several improvements and features, lets take a look at each individually.

=== PostgreSQL isolation level support

A longstanding enhancement for snapshot isolation support for PostgreSQL is now here!
A new connector configuration property, `snapshot.isolation.mode`, allows the connector to control the consistency used while executing the initial and ad-hoc blocking snapshot steps.
There are four isolation levels: `serializable` (the default), `repeatable_read`, `read_committed`, and `read_uncommitted`.
You can find details about these isolation levels and how they work with PostgreSQL in the https://www.postgresql.org/docs/current/transaction-iso.html[documentation] (https://issues.redhat.com/browse/DBZ-1252[DBZ-1252]).

=== JDBC retry flushes on specific failures

The JDBC sink uses a set of buffers to improve the throughput writes to the target database.
In some use cases, the flush operation of these buffers may face specific exceptions due to locks due to other applications that may have locked a specific row or table.
To improve the user experience, two new configuration properties have been added:

`flush.failure.max.retries`:: Defines the number of retries when a flush failure occurs.
`flush.failure.retries.wait.ms`:: Defines the number of milliseconds to wait between a retry.

The retry feature is enabled by default, attempting to retry up to a maximum `5` attempts, with a 1-second delay between retries.
If you prefer retries disabled, setting `flush.failure.max.retries` to `0` would disable this feature (https://issues.redhat.com/browse?DBZ-7291[DBZ-7291]).

=== Oracle EXTENDED max string size support

Oracle extended strings is a feature that allows the traditional 4000 byte limit on character data to be raised to 32K.
This is done by applying a database upgrade to set the database parameter `max_string_size` to `EXTENDED`.
The extended string feature then allows using the same SQL syntax used for 4000 byte or smaller character data to be used for character data up to 32K without forcing you to use CLOB-based operations.

With Debezium 3, you can now use the Oracle connector with databases that use extended strings and capture the changes directly from the transaction logs (https://issues.redhat.com/browse/DBZ-8039[DBZ-8039]).
As extended strings are effectively CLOB operations on the database level, mining such column types require setting `lob.enabled` to `true`.

As this new feature is experimental, we'd love to hear any feedback from the community!

=== Oracle CLOB/BLOB default value support

In some cases, Oracle users may define tables with a CLOB or BLOB as required, using the `EMPTY_BLOB()` or `EMPTY_CLOB()` function to define a default when the field isn't supplied.
In previous builds, these special functions were not evaluated by Debezium, and such columns would have been emitted as optional rather than not optional.

Starting with Debezium 3, when an `EMPTY_BLOB()` or `EMPTY_CLOB()` default value is specified, the field will be emitted as not optional.
Additionally, the field contain the appropriate default value, an empty byte array or an empty string respectively (https://issues.redhat.com/browse/DBZ-8248[DBZ-8248]).

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

* Debezium does not restart automatically after throwing an ORA-00600 krvrdccs30 error https://issues.redhat.com/browse/DBZ-8223[DBZ-8223]
* JDBC sink doesn't include fields as per documentation https://issues.redhat.com/browse/DBZ-8224[DBZ-8224]
* Broken link to Streams doc about configuring logging https://issues.redhat.com/browse/DBZ-8231[DBZ-8231]
* Document passthrough hibernate.* properties for the JDBC connector https://issues.redhat.com/browse/DBZ-8232[DBZ-8232]
* Unbounded number of processing threads in async engine https://issues.redhat.com/browse/DBZ-8237[DBZ-8237]
* Streaming metrics are stuck after an ad-hoc blocking snapshot https://issues.redhat.com/browse/DBZ-8238[DBZ-8238]
* DDL statement couldn't be parsed with IF EXISTS https://issues.redhat.com/browse/DBZ-8240[DBZ-8240]
* Random engine factory used by default https://issues.redhat.com/browse/DBZ-8241[DBZ-8241]
* JDBC sink test suite should use the debezium/connect:nightly image for e2e tests https://issues.redhat.com/browse/DBZ-8245[DBZ-8245]
* Bump Infinispan to 15.0.8.Final https://issues.redhat.com/browse/DBZ-8246[DBZ-8246]
* AbstractConnectorTest consumeRecordsUntil may prematurely exit loop https://issues.redhat.com/browse/DBZ-8250[DBZ-8250]
* Performance Regression in Debezium Server Kafka after DBZ-7575 fix https://issues.redhat.com/browse/DBZ-8251[DBZ-8251]
* Add a note to the docs about JDBC batch retry configs https://issues.redhat.com/browse/DBZ-8252[DBZ-8252]
* Fix conditionalization in shared MariaDB/MySQL file https://issues.redhat.com/browse/DBZ-8254[DBZ-8254]
* Error Prone library included in MySQL connector https://issues.redhat.com/browse/DBZ-8258[DBZ-8258]
* Debezium.text.ParsingException: DDL statement couldn't be parsed https://issues.redhat.com/browse/DBZ-8259[DBZ-8259]
* Add Oracle FUTC license https://issues.redhat.com/browse/DBZ-8260[DBZ-8260]
* Remove Oracle libs from product assembly package https://issues.redhat.com/browse/DBZ-8261[DBZ-8261]
* debezium-connector-binlog does not need MariaDB dependency https://issues.redhat.com/browse/DBZ-8263[DBZ-8263]
* Provide subset package for Debezium Server https://issues.redhat.com/browse/DBZ-8264[DBZ-8264]

Altogether, https://issues.redhat.com/issues/?jql=project%20%3D%20DBZ%20AND%20fixVersion%20%3D%203.0.0.CR2%20ORDER%20BY%20issuetype%20DESC[44 issues] were fixed in this release.
Here are a list of some additional noteworthy changes:

A huge thank you to all contributors from the community who worked on this release:
https://github.com/m8719-github[Andrei Leibovski],
https://github.com/ani-sha[Anisha Mohanty],
https://github.com/Naros[Chris Cranford],
https://github.com/cwholmes[Cody Holmes],
https://github.com/nicholas-fwang[Inki Hwang],
https://github.com/jpechane[Jiri Pechanec],
https://github.com/mfvitale[Mario Fiore Vitale],
https://github.com/roldanbob[Robert Roldan],
https://github.com/vjuranek[Vojtěch Juránek], and
https://github.com/msillence[martin]!

[id="whats-next"]
== What's next &amp Outlook?

First and foremost, assuming there are no critical issues, you can expect the final release of Debezium 3 sometime next week.
As we begin to shift toward the remainder of 2024, it's important to discuss what lies ahead for the remainder of this year and 2025.

For the remainder of the 2024 calendar year, the team will continue to deliver maintenance and bugfix releases for Debezium 3.
These will continue at our normal cadence, approximately every 2-3 weeks, barring issues reported and those fixed.
However, what will be changing this year is that there won't be a minor release in December like years past.
This decision is to allow the team to focus on a number of low-hanging fruit activities that don't necessarily or directly tie to development tasks.

In addition, as we get closer to the end of the year, we'll be putting out our vision of the 2025 roadmap and what that includes.
Now is a perfect time to think about what you'd like to see on that roadmap and get involved.
You can always reach us on our https://groups.google.com/forum/#!forum/debezium[mailing list] or in our https://debezium.zulipchat.com/login/#narrow/stream/302529-users[Zulip chat]!

0 comments on commit a3a28c4

Please sign in to comment.