Skip to content

Commit

Permalink
2.7.0.Alpha2 announcement
Browse files Browse the repository at this point in the history
  • Loading branch information
Naros committed May 13, 2024
1 parent 86e8fee commit 773ad09
Show file tree
Hide file tree
Showing 2 changed files with 132 additions and 1 deletion.
2 changes: 1 addition & 1 deletion _data/releases/2.7/2.7.0.Alpha2.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ date: 2024-05-10
version: "2.7.0.Alpha2"
stable: false
summary: `ROW_ID` provided in Oracle connector source info block; JDBC connector supports PostgreSQL arrays; Debezium Server NATS sink supports JWT authentication; Debezium container images use Fedora 38; Performance improvement for Oracle LogMiner for very large number of tables
# announcement_url:
announcement_url: /blog/2024/05/13/debezium-2-7-alpha2-released/

131 changes: 131 additions & 0 deletions _posts/2024-05-13-debezium-2-7-alpha2-released.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
---
layout: post
title: Debezium 2.7.0.Alpha2 Released
date: 2024-05-13
tags: [ releases, mongodb, mysql, mariadb, postgres, sqlserver, cassandra, oracle, db2, vitess, outbox, spanner, jdbc, informix, ibmi ]
author: ccranfor
---

The old saying is "April showers bring May flowers"; however, in this case it seems a new Debezium release has sprouted packed with many new features.
We're pleased to announce the release of Debezium **2.7.0.Alpha2**, the next pre-release in the Debezium 2.7 stream, is now available for testing.

This release includes new ROW_ID serialization for the Oracle connector, PostgreSQL array support for the JDBC sink connector, NATs authentication with Debezium Server, performance improvements with Oracle LogMiner and large tables, and more.
Let's walk through the highlights of this release and discuss these and more in-depth...

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

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

Debezium 2.7.0.Alpha2 also introduces many improvements and features, lets take a look at each individually.

=== Oracle ROW_ID included in change events

While `ROW_ID` is not unique across all rows of a table for the table's lifespan, it can be used in certain situations when the lifecycle of the table and rows are managed in a very strict way.
At the community's request, we've added a new `row_id` field to the Oracle connector's change event source information block (https://issues.redhat.com/browse/DBZ-4332[DBZ-4332]).
This new field will be populated with the `ROW_ID` value under the following conditions:

* Only populated from streaming events for inserts, updates, and deletes.
* Snapshot evnets will not contain a `row_id` value.
* Only provided by the LogMiner and XStream streaming adapters, OpenLogReplicator is not supported.

Any event that does not match the criteria will not include a `row_id` field as its marked as _optional_.

=== PostreSQL Arrays with the JDBC sink

The JDBC sink connector supports the use of mapping source columns to Kafka ARRAY-based payload field types.
With Debezium 2.7, you can now serialize ARRAY-based fields to a target PostgreSQL database, with no change in configuration.
The new support should be completely transparent (https://issues.redhat.com/browse/DBZ-7752[DBZ-7752]).

=== Oracle flush table with custom schema names

In prior versions of Debezium, the Oracle connector was strictly designed to create the LogMiner flush table in the default tablespace of the connector user account.
This wasn't always useful in situations where the user's default tablespace may not be the ideal destination and the DBA would prefer that table to exist in a separate tablespace.

Previously, users would need to modify the user account or use a new user with the correct tablespace to have the table created in the right tablespace location.
With Debezium 2.7, this is no longer required, and you can safely include the name of the target schema/tablespace in the configuration (https://issues.redhat.com/browse/DBZ-7819[DBZ-7819]).

.Example using a custom schema name
[source]
----
log.mining.flush.table.name=THE_OTHER_SCHEMA.LOG_MINING_FLUSH_TABLE
----

The schema name is optional and if not supplied, the connector continues to use the same legacy behavior of creating the flush table and checking for its existence in the user's default tablespace.

=== NATS authentication with JWT/seed

The Debezium Server NATs streaming sink adapter was improved, supporting JWT/seed based authentication (https://issues.redhat.com/browse/DBZ-7829[DBZ-7829]).
To get started using the JWT/seed-based authentication, supply the following necessary values in the configuration:

.JWT authentication example
[source]
----
debezium.sink.nats-jetstream.auth.jwt=<your_jwt_token>
----

.Seed authentication example
[source]
----
debezium.sink.nats-jetstream.auth.seed=<your_nkey_seed>
----

For this and more, please see the NATS documentation for details about JWT and NKey seed based authentication.

=== Oracle query filter with large numbers of tables

The Debezium Oracle connector can support thousands of tables in a single connector deployment with ease; however, you may have found you wanted to customize the query filter using the `IN` mode.
This mode is used in situations where you may have a high volume of changes for other tables and you want to filter that dataset out at the database level before the changes are passed to Debezium for processing.

In earlier versions, users may have noticed that setting `log.mining.query.filter.mode` with a value of `in` and where your table include list contained more than 1000 elements generated a SQL error.
Oracle does not permit more than 1000 elements within an in-clause; however, Debezium 2.7 addresses this limitation by using a disjunction between multiple buckets of 1000 item in-clause lists (https://issues.redhat.com/browse/DBZ-7847[DBZ-7847]).

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

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

* Log exception details early in case MySQL keep-alive causes deadlock on shutdown https://issues.redhat.com/browse/DBZ-7570[DBZ-7570]
* Extend mongodb system tests with ssl option https://issues.redhat.com/browse/DBZ-7605[DBZ-7605]
* > io.debezium.text.ParsingException : SQL Contains Partition https://issues.redhat.com/browse/DBZ-7805[DBZ-7805]
* Ad-hoc blocking snapshot not working through file channeling without inserting a row in the database. https://issues.redhat.com/browse/DBZ-7806[DBZ-7806]
* Postgres: Potential data loss on connector restart https://issues.redhat.com/browse/DBZ-7816[DBZ-7816]
* DEBEZIUM_VERSION is wrongly set to 2.6.0.Alpha1 https://issues.redhat.com/browse/DBZ-7827[DBZ-7827]
* Sql Server incorrectly applying quoted snapshot statement overrides https://issues.redhat.com/browse/DBZ-7828[DBZ-7828]
* Debezium JDBC Sink not handle order correctly https://issues.redhat.com/browse/DBZ-7830[DBZ-7830]
* Bump Outbox Extension to Quarkus 3.10.0 https://issues.redhat.com/browse/DBZ-7842[DBZ-7842]
* Support Oracle DDL Alter Audit Policy https://issues.redhat.com/browse/DBZ-7864[DBZ-7864]
* Support Oracle DDL Create Audit Policy https://issues.redhat.com/browse/DBZ-7865[DBZ-7865]

A huge thank you to all contributors from the community who worked on this release:
https://github.com/acristu[Alexandru Cristu],
https://github.com/adasari[Anil Dasari],
https://github.com/bpaquet[Bertrand Paquet],
https://github.com/cjho0316[Choi Jang Ho],
https://github.com/Naros[Chris Cranford],
https://github.com/calmera[Daan Gerits],
https://github.com/DLT1412[Duc Le Tu],
https://github.com/ilyasahsan123[Ilyas Ahsan],
https://github.com/ismailsimsek[Ismail Simsek],
https://github.com/jpechane[Jiri Pechanec],
https://github.com/zeldanerd24[Kevin Rothenberger],
https://github.com/mfvitale[Mario Fiore Vitale],
https://github.com/MartinMedek[Martin Medek],
https://github.com/PradeepNain[Pradeep Nain],
https://github.com/roldanbob[Robert Roldan], and
https://github.com/leoloel[leoloel]!

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

We have our team face-to-face next week, and it's going to be absolutely fantastic since its the first time we get to meet in person since the Covid pandemic.
We're going to use this time to discuss all the community feedback we're received throughout Debezium 2, reflect on what worked, and put together action plans for what didn't.

The main focus for our meeting is to develop an action plan for Debezium 3.0 and beyond, assign tasks and priorities across the team so that as we focus on Debezium 3 next quarter, we can make this next major release an easy replacement for the community while also delivering a new, refreshing, feature-rich major version.
We will be updating the roadmap and deliverables when we're back, so be sure to stay tuned to our link:/docs/roadmap[road map].

In terms of Debezium 2.7, we're halfway through the quarter, and we're about to turn our focus on the last half where we will address any bugs, regressions, and polish new features.
If you have the chance to test-drive the pre-releases, we strongly encourage you to do so and file bug reports.

Until next time...

0 comments on commit 773ad09

Please sign in to comment.