Release Notes for Debezium 3.1

All notable changes for Debezium releases are documented in this file. Release numbers follow Semantic Versioning.

Release 3.1.0.CR1 (March 24th 2025)

Kafka compatibility

This release has been built against Kafka Connect 3.9.0 and has been tested with version 3.9.0 of the Kafka brokers. See the Kafka documentation for compatibility with other versions of Kafka brokers.

Upgrading

Before upgrading any connector, be sure to check the backward-incompatible changes that have been made since the release you were using.

When you decide to upgrade one of these connectors to 3.1.0.CR1 from any earlier versions, first check the migration notes for the version you’re using. Gracefully stop the running connector, remove the old plugin files, install the 3.1.0.CR1 plugin files, and restart the connector using the same configuration. Upon restart, the 3.1.0.CR1 connectors will continue where the previous connector left off. As one might expect, all change events previously written to Kafka by the old connector will not be modified.

If you are using our container images, then please do not forget to pull them fresh from Quay.io.

Breaking changes

Oracle connector queries waited indefinitely when executed. This is no longer the case as query timeout configuration parameter is applied to them (DBZ-8830).

New features

  • Centralise sensitive data logging using the Loggings Class DBZ-8525

  • Reduce frequency table exists and column metadata queries DBZ-8570

  • Unify helm charts DBZ-8705

  • Implement ErrorHandler to throw RetriableException during SinkTask put operations DBZ-8727

  • Add support for event key routing in RabbitMQ sink DBZ-8752

  • Develop a Quarkus Application Example with Debezium Optimized for GraalVM DBZ-8754

  • Support keyspace heartbeats feature DBZ-8775

  • Improve Error Handling for Duplicate server_id / server_uuid in MySQL Connector DBZ-8786

  • Handle BYTES as VARBINARY in SQLServer sink DBZ-8790

  • Support string with temporal precision mode DBZ-8826

Fixes

  • The first cdc message always lost when using debezium engine to capture oracle data DBZ-8141

  • Signal Channel Kafka restart snapshot multiple snapshot after connector restart DBZ-8780

  • Sources and home in debezium platform helm chart points to old repo DBZ-8784

  • DebeziumServerPostgresIT randomly fails DBZ-8821

  • Unexpected null value for Field Configuration deprecated aliases DBZ-8832

Other changes

  • Update format-maven-plugin to 2.26.0 DBZ-8695

  • Centralize helm chart repo DBZ-8707

  • OTEL libs are not loaded to Docker image DBZ-8767

  • Change the documentation of minimum Java version requirement from 11 to 21 DBZ-8771

  • Add delete.tombstone.handling.mode to ConfigDef returned by config method and change its display name DBZ-8776

  • Update Debezium platform images in values.yaml DBZ-8781

  • Allow Debezium server to use Kafka Connect format for the records DBZ-8782

  • Write README for debezium-chart repo DBZ-8785

  • Remove Helm from Debezium operator manifest README DBZ-8791

  • Write blog post about the recent changes on charts.debezium.io DBZ-8792

  • Test keyspace heartbeats during snapshot DBZ-8824

  • Make methods for adding fields into the record reuseable DBZ-8825

  • Enable build of debezium platform images DBZ-8829

Release 3.1.0.Beta1 (March 11th 2025)

Kafka compatibility

This release has been built against Kafka Connect 3.9.0 and has been tested with version 3.9.0 of the Kafka brokers. See the Kafka documentation for compatibility with other versions of Kafka brokers.

Upgrading

Before upgrading any connector, be sure to check the backward-incompatible changes that have been made since the release you were using.

When you decide to upgrade one of these connectors to 3.1.0.Beta1 from any earlier versions, first check the migration notes for the version you’re using. Gracefully stop the running connector, remove the old plugin files, install the 3.1.0.Beta1 plugin files, and restart the connector using the same configuration. Upon restart, the 3.1.0.Beta1 connectors will continue where the previous connector left off. As one might expect, all change events previously written to Kafka by the old connector will not be modified.

If you are using our container images, then please do not forget to pull them fresh from Quay.io.

Breaking changes

There are no breaking changes in this release.

New features

  • A CloudEvent can contain traceparent field which value is obtained from header DBZ-8669

  • Disable the delete option for the resources(source, destination, transform) that are in use in pipeline. DBZ-8683

  • Differentiate between epoch & zero dates when columns it not nullable DBZ-8689

  • Set string data type for medium/tiny/long text cols with binary collation DBZ-8694

  • Dependencies in connect-base can be excluded in build time DBZ-8709

  • Add concurrency and compression to pub/sub change consumer DBZ-8715

  • Prevent table-level read locks when minimal locking is enabled DBZ-8717

  • Refactor JdbcChangeEventSink execute method for buffer resolution DBZ-8726

  • Add support for Google Cloud Pub/Sub locational endpoints DBZ-8735

  • Wasm SMT effective access to schema fields DBZ-8737

  • Oracle Connector: Additional timestamp fields from LogMiner (V$LOGMNR_CONTENTS) DBZ-8740

  • Trim extra spaces in property keys when transforming to config DBZ-8748

  • Add support for event key routing in RabbitMQ sink DBZ-8752

Fixes

  • SQL Server Connector cannot be upgraded to 2.0 DBZ-5845

  • JDBC sink connector doesn’t delete rows from a postgres db table DBZ-8287

  • MariaDB adapter fails on an ALTER USER statement DBZ-8436

  • Expressions cause SQL parser exception in Percona SEQUENCE_TABLE function DBZ-8559

  • Slow Debezium startup for large number of tables DBZ-8595

  • Debezium doesn’t shut down correctly when encountering message delivery timeout from pub/sub DBZ-8672

  • Broken pipe on streaming connection after blocking snapshot (Postgres) DBZ-8680

  • ts_ms in source may default to 0 instead of Instant.now() DBZ-8708

  • PDB database name default considering as UPPERCASE DBZ-8710

  • Alter table modify column fails when using DEFAULT ON NULL clause DBZ-8720

  • ExtractChangedRecordState SMT Now Working With Default Values DBZ-8721

  • Restart of Oracle RAC node leads to redo thread being inconsistent indefinitely DBZ-8724

  • Specifying archive.log.hours with non-zero value generates bad SQL DBZ-8725

  • debezium/connect docker image is not available on arm64 DBZ-8728

  • Debezium Server: Nats consumer crashes with binary serialization DBZ-8734

  • Possibly broken schema.history.internal.skip.unparseable.ddl for MariaDB DBZ-8745

  • Oracle snapshot’s source.ts does not account for database zone differences DBZ-8749

Other changes

  • Support debezium platform in the release pipeline DBZ-8682

  • Create pipeline for package helm charts and publish on quay.io DBZ-8706

  • Add more unit tests for deciding if the row was handled or not DBZ-8716

  • Test debezium scale down reads offsets DBZ-8719

  • Create an orchestrator pipeline to run the release DBZ-8731

  • MySqlConnectorConvertingFailureIT.shouldRecoverToSyncSchemaWhenFailedValueConvertByDdlWithSqlLogBinIsOff fails randomly DBZ-8736

  • Update the way tests calculates the default zoned times for MariaDB driver 3.5 DBZ-8742

  • Bump assertj-core to 3.27.3 DBZ-8751

Release 3.1.0.Alpha2 (February 20th 2025)

Kafka compatibility

This release has been built against Kafka Connect 3.9.0 and has been tested with version 3.9.0 of the Kafka brokers. See the Kafka documentation for compatibility with other versions of Kafka brokers.

Upgrading

Before upgrading any connector, be sure to check the backward-incompatible changes that have been made since the release you were using.

When you decide to upgrade one of these connectors to 3.1.0.Alpha2 from any earlier versions, first check the migration notes for the version you’re using. Gracefully stop the running connector, remove the old plugin files, install the 3.1.0.Alpha2 plugin files, and restart the connector using the same configuration. Upon restart, the 3.1.0.Alpha2 connectors will continue where the previous connector left off. As one might expect, all change events previously written to Kafka by the old connector will not be modified.

If you are using our container images, then please do not forget to pull them fresh from Quay.io.

Breaking changes

The documentation of schema.history.internal.store.only.captured.databases.ddl provided incorrect default value. While this is not real breaking change, you should evaluate whether your deployment depends on the different default value or not (DBZ-8558).

Debezium Vitess Connector had a rare but critical data loss bug that existed since its first PR–5 years ago. If a primary key update is the last operation in a transaction, records may be lost. Affects all prior versions. This is recommendation for an immediate update (DBZ-8594).

Deprecated Oracle JMX metrics were removed (DBZ-8647).

When Oracle LOB processing was enabled then the column re-selector did not emit LOB columns. This has been changed and the LOB columns are emitted by the reselector regradless of the configuration setting (DBZ-8653).

New features

  • Error handling mode in ReselectColumnsPostProcessors DBZ-8336

  • Provide full data types coverage for TinyGo Wasm SMT DBZ-8586

  • Add predicates support in Transformation UI DBZ-8590

  • Mention write permission on signaling data collection for incremental snapshot DBZ-8596

  • Publish Debezium platform snapshot artifact DBZ-8603

  • Include Current Archive log been processed in JMX metrics DBZ-8644

  • All text cols with binary collation should still be output as strings DBZ-8679

  • SQL Server - Errors related to schema validation should provide more details DBZ-8692

Fixes

  • Reduced record buffer doesn’t handle RECORD_VALUE with primary key fields DBZ-8593

  • Events for tables with generated columns fail when using hybrid mining strategy DBZ-8597

  • ANTLR DDL Parsing error DBZ-8600

  • MySQL master and replica images fail to start DBZ-8633

  • Remove misleading log entry about undo change failure DBZ-8645

  • Oracle metric OldestScnAgeInMilliseconds does not account for database timezone DBZ-8646

  • Using RECORD_VALUE with a DELETE event causes NullPointerException DBZ-8648

  • Downstream JDBC system tests fails DBZ-8651

  • Batch size calculation is incorrectly using min-batch-size DBZ-8652

  • Mysql example images for replication don’t work DBZ-8655

  • Oracle performance drop when transaction contains many constraint violations DBZ-8665

  • Upstream system tests fail DBZ-8678

  • Skip empty transactions with commit with redo thread equal to 0 DBZ-8681

  • DDL statement couldn’t be parsed: GRANT SENSITIVE_VARIABLES_OBSERVER DBZ-8685

Other changes

  • Link old jdbc connector to new home and mark as retired DBZ-8225

  • Align MySQL and MariaDB grammars with upstream versions DBZ-8270

  • Add transformations and predicates support in conductor DBZ-8459

  • Documentation version-picker redirects to overview page DBZ-8483

  • Add note to connector docs to inform users about future removal of Containerfile deployment instructions DBZ-8566

  • HIghlight that Debezium containers are not production ready DBZ-8580

  • Change schema history producer configurations DBZ-8598

  • Update Debezium Server and Operator to Quarkus 3.15.3 LTS DBZ-8601

  • Allow optional removal of ehcache form Oracle package DBZ-8602

  • Change snapshot pipeline to publish conductor artifacts DBZ-8604

  • Build conductor snapshot image DBZ-8605

  • Build stage snapshot image DBZ-8606

  • Publish stage/conductor nightly images to image registry DBZ-8607

  • Upgrade AssertJ-DB DBZ-8609

  • Prepare Logical message decoder SMT docs for productization DBZ-8641

  • Remove push from github workflow in container-images repo DBZ-8649

  • Update QOSDK to 6.9.3 DBZ-8654

  • Document PostgreSQL snapshot.isolation.mode property DBZ-8659

  • Integration tests should verify truncation of all data types DBZ-8663

  • Upgrade protoc from 1.4 to 1.5 for postgres container images DBZ-8670

  • Snapshot tests fails with Kafka 3.8.0 DBZ-8688

  • Enable formatting checks on all project durinig PRs DBZ-8698

  • Disable ARM images for PostgreSQL DBZ-8713

Release 3.1.0.Alpha1 (January 20th 2025)

Kafka compatibility

This release has been built against Kafka Connect 3.9.0 and has been tested with version 3.9.0 of the Kafka brokers. See the Kafka documentation for compatibility with other versions of Kafka brokers.

Upgrading

Before upgrading any connector, be sure to check the backward-incompatible changes that have been made since the release you were using.

When you decide to upgrade one of these connectors to 3.1.0.Alpha1 from any earlier versions, first check the migration notes for the version you’re using. Gracefully stop the running connector, remove the old plugin files, install the 3.1.0.Alpha1 plugin files, and restart the connector using the same configuration. Upon restart, the 3.1.0.Alpha1 connectors will continue where the previous connector left off. As one might expect, all change events previously written to Kafka by the old connector will not be modified.

If you are using our container images, then please do not forget to pull them fresh from Quay.io.

Breaking changes

Source info block schema was not versioned in past Debezium versions. This could lead to schema compatibility issue when changed. The schema version is now set to 1 and will be incremented with future changes (DBZ-8499).

Debezium introduced SparseVector datatype for PostgreSQL sparsevec data. This release introduces support for Oracle vector datatypes and SparseVector was renamed so it became cross-connector type (DBZ-8585).

New features

  • Support new non adaptive temporal values DBZ-6387

  • Add MariaDB SSL support DBZ-8482

  • Update the pipeline designer flow UI to remove the multi moving circle to just have one instead. DBZ-8532

  • Sqlserver connector requires unbounded memory to process big transactions DBZ-8557

  • Use enum set strings flag available in Vitess v20 for decoding enums/sets DBZ-8561

  • Pulsar Producer Batcher Builder - Key Based Batching DBZ-8563

  • Prototype support of WASM in Debezium transformation DBZ-8568

  • S3 storage can force path-style addressing DBZ-8569

  • Support MySQL and PostgreSQL vector data types DBZ-8571

Fixes

  • Exception during commit offsets won’t trigger retry logic. DBZ-2386

  • Fix invalid gtid error on startup when ordered tx metadata enabled DBZ-8541

  • Debezium operator generate wrong offset and schema history properties DBZ-8543

  • A recent log switch may be seen as consistent during log gathering DBZ-8546

  • Content-based routing expression variable headers is singular in code DBZ-8550

  • MongoDataConverter does not recognize nested empty array DBZ-8572

  • Fix issues in Transformation UI sections DBZ-8575

  • ORA-65040 occurs on log switches when log.mining.restart.connection is enabled and connection defaults to PDB rather than CDB$ROOT DBZ-8577

Other changes

  • Remove mongo-initiator images DBZ-8487

  • Support storages supported by Debezium operator for pipeline in Debezium platform DBZ-8512

  • Setup minimum CI pipeline for debezium-platform-conductor DBZ-8527

  • Missing quick profile in test containers module DBZ-8545

  • Upgrade MongoDB driver to 5.2 DBZ-8554

  • Move to Quarkus 3.17.7 for the Outbox Extension DBZ-8583

  • Use latest tag instead of nightly for conductor image DBZ-8589