Release Notes for Debezium 3.0

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

Release 3.0.0.Beta1 (August 22nd 2024)

Kafka compatibility

This release has been built against Kafka Connect 3.8.0 and has been tested with version 3.8.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.0.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.0.0.Beta1 plugin files, and restart the connector using the same configuration. Upon restart, the 3.0.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

Debezim Kafka sink could wait indefinitely in case of Kafka broker unavailablity. A support for configurable timeout was added and the default behaviour is timeout after 30 seconds (DBZ-7575).

RabbitMQ native stream sink was sending changes all messages into a static single stream. With the new default behaviour the changes are sent to a distinct stream for each table (DBZ-8118).

New features

  • Implement Ehcache event buffer DBZ-7758

  • Expose a metric for number of create, update, delete events per table DBZ-8035

  • Log additional details about abandoned transactions DBZ-8044

  • Introduce timeout for replication slot creation DBZ-8073

  • ConverterBuilder doesn’t pass Headers to be manipulated DBZ-8082

  • Add SMT to decode binary content of a logical decoding message DBZ-8103

  • Support DECIMAL(p) Floating Point DBZ-8114

  • Support for PgVector datatypes DBZ-8121

  • Implement in process signal channel DBZ-8135

  • Validate log position method missing gtid info from SourceInfo DBZ-8140

  • Vitess Connector Epoch should support parallelism & shard changes DBZ-8154

  • Add an option for publication.autocreate.mode to create a publication with no tables DBZ-8156

Fixes

  • Incremental snapshots don’t work with CloudEvent converter DBZ-7601

  • Snapshot retrying logic falls into infinite retry loop DBZ-7860

  • Primary Key Update/ Snapshot Race Condition DBZ-8113

  • Docs: connect-log4j.properties instead log4j.properties DBZ-8117

  • Recalculating mining range upper bounds causes getScnFromTimestamp to fail DBZ-8119

  • ORA-00600: internal error code, arguments: [krvrdGetUID:2], [18446744073709551614], [], [], [], [], [], [], [], [], [], [] DBZ-8125

  • ConvertingFailureIT#shouldFailConversionTimeTypeWithConnectModeWhenFailMode fails randomly DBZ-8128

  • ibmi Connector does not take custom properties into account anymore DBZ-8129

  • Unpredicatable ordering of table rows during insertion causing foreign key error DBZ-8130

  • schema_only crashes ibmi Connector DBZ-8131

  • Support larger database.server.id values DBZ-8134

  • Open redo thread consistency check can lead to ORA-01291 - missing logfile DBZ-8144

  • SchemaOnlyRecoverySnapshotter not registered as an SPI service implementation DBZ-8147

  • When stopping the Oracle rac node the Debezium server throws an expections - ORA-12514: Cannot connect to database and retries DBZ-8149

  • Issue with Debezium Snapshot: DateTimeParseException with plugin pgoutput DBZ-8150

  • JDBC connector validation fails when using record_value with no primary.key.fields DBZ-8151

  • Taking RAC node offline and back online can lead to thread inconsistency DBZ-8162

Other changes

  • MySQL has deprecated mysql_native_password usage DBZ-7049

  • Upgrade to Apicurio 2.5.8 or higher DBZ-7357

  • Write and publish Debezium Orchestra blog post DBZ-7972

  • Move Debezium Conductor repository under Debezium Organisation DBZ-7973

  • Decide on name, jira components, etc…​ for Debezium Orchestra platform DBZ-7975

  • Migrate Postgres testsuite to async engine DBZ-8077

  • Conditionalize reference to the MySQL default value in description of schema.history.internal.store.only.captured.databases.ddl DBZ-8081

  • Bump Debezium Server to Quarkus 3.8.5 DBZ-8095

  • Converters documentation uses incorrect examples DBZ-8104

  • Remove reference to`additional condition` signal parameter from ad hoc snapshots doc DBZ-8107

  • TimescaleDbDatabaseTest.shouldTransformCompressedChunks is failing DBZ-8123

  • Update Oracle connector doc to describe options for restricting access permissions for the Debezium LogMiner user DBZ-8124

  • Use SQLSTATE to handle exceptions for replication slot creation command timeout DBZ-8127

  • Re-add check to test for if assembly profile is active DBZ-8138

  • Add LogMiner start mining session retry attempt counter to logs DBZ-8143

  • Reduce logging verbosity of XStream DML event data DBZ-8148

  • Upgrade Outbox Extension to Quarkus 3.14.0 DBZ-8164

Release 3.0.0.Alpha2 (August 2nd 2024)

Kafka compatibility

This release has been built against Kafka Connect 3.8.0 and has been tested with version 3.8.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.0.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.0.0.Alpha2 plugin files, and restart the connector using the same configuration. Upon restart, the 3.0.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

Debezium is now build with Kafka 3.8.0. There were few changes in Kafka internal APIs Debezium is using. The codebase was modified to run with both pre-3.8.0 and 3.8.0 versions (DBZ-8105).

New features

  • Add Status ObservedGeneration to Operator DBZ-8025

  • Support Custom Converters in Debezium Server DBZ-8040

  • Support FLOAT32 type in debezium-connector-spanner DBZ-8043

  • Debezium should auto exclude empty shards (no tablets) and not crash on keyspaces with empty shards DBZ-8053

  • Refactor LogMining implementation to allow alternative cache implementations DBZ-8054

  • Standard Webhooks signatures for HTTP sink DBZ-8063

  • Vitess-connector should provide a topic naming strategy that supports separate connectors per-table DBZ-8069

  • Update third-party LICENSE with LGPL forMariaDB Connector/J DBZ-8099

  • Rabbitmq native stream Failed DBZ-8108

Fixes

  • Embedded Infinispan tests fail to start with Java 23 DBZ-7840

  • Clarify that Oracle connector does not read from physical standby DBZ-7895

  • StackOverflow exception on incremental snapshot DBZ-8011

  • JDBC primary.key.fields cannot be empty when i set insert.mode to upsert and primary.key.mode record_value DBZ-8018

  • Unable to acquire buffer lock, buffer queue is likely full DBZ-8022

  • Release process sets incorrect images for k8s for the next development version DBZ-8041

  • Use recrate as (default) rollout strategy for deployments DBZ-8047

  • "Unexpected input: ." when snapshot incremental empty Database DBZ-8050

  • Debezium Operator Using RollingUpdate Strategy DBZ-8051

  • Debezium Operator Using RollingUpdate Strategy DBZ-8052

  • Oracle connector inconsistency in redo log switches DBZ-8055

  • Blocking snapshot can fail due to CommunicationsException DBZ-8058

  • FakeDNS not working with JDK version > 18 DBZ-8059

  • Debezium Operator with a provided Service Account doesn’t spin up deployment DBZ-8061

  • ParsingException (MySQL/MariaDB): rename table syntax DBZ-8066

  • Oracle histogram metrics are no longer printed in logs correctly DBZ-8068

  • In hybrid log.mining.strategy reconstruction logs should be set to DEBUG DBZ-8070

  • Support capturing BLOB column types during snapshot for MySQL/MariaDB DBZ-8076

  • Standard Webhooks auth secret config value is not marked as PASSWORD_PATTERN DBZ-8078

  • Vitess transaction Epoch should not reset to zero when tx ID is missing DBZ-8087

  • After changing the column datatype from int to float the Debezium fails to round it and i get a null value for this field in the stream DBZ-8089

  • MySQL and MariaDB keyword YES cannot be parsed as a column name DBZ-8092

  • NotificationIT tests seemingly seem to fail due to stepping on one another DBZ-8100

  • ORA-26928 - Unable to communicate with XStream apply coordinator process should be retriable DBZ-8102

  • Transformations are not closed in emebdded engine DBZ-8106

  • Don’t close connection after loading timescale metadata in TimescaleDb SMT DBZ-8109

Other changes

  • Bump Infinispan to 14.0.29.Final DBZ-8010

  • Write a blog post about async engine DBZ-8013

  • Test offset/history store configurations DBZ-8015

  • Upgrade postgres server version to 15 DBZ-8062

  • Disable DebeziumResourceNoTopicCreationIT - no longer compatible with Java 21 DBZ-8067

  • Speed-up PostgresShutdownIT DBZ-8075

  • Add MariaDB to debezium/connect image DBZ-8088

Release 3.0.0.Alpha1 (July 11st 2024)

Kafka compatibility

This release has been built against Kafka Connect 3.7.0 and has been tested with version 3.7.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.0.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.0.0.Alpha1 plugin files, and restart the connector using the same configuration. Upon restart, the 3.0.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

Debezium connectors now require Java 17 for runtime and Java 21 for building. Debezium Server, Debezium Operator, and Debezium Outbox extension require Java 21 both for build and runtime (DBZ-6795).

New features

  • Provide MongoDB sink connector DBZ-7223

  • Extends process of finding Bundle path DBZ-7992

  • Support FLOAT32 type in debezium-connector-spanner DBZ-8043

Fixes

  • Debezium postgres jdbc sink not handling infinity values DBZ-7920

  • JdbcSinkTask doesn’t clear offsets on stop DBZ-7946

  • ibmi as400 connector config isn’t prefixed with "database." DBZ-7955

  • Duplicate downstream annotation comments incorrectly refer to Db2 connector DBZ-7968

  • Issue with Hybrid mode and DDL change DBZ-7991

  • Incorrect offset/history property mapping generatated DBZ-8007

  • Debezium Server Operator on minikube with java.lang.NullPointerException': java.lang.NullPointerException DBZ-8019

  • ORA-65090: operation only allowed in a container database when connecting to a non-CDB database DBZ-8023

  • Added type to Prometheus JMX exporter DBZ-8036

  • Add kafka.producer metrics to debezium-server jmx exporter config DBZ-8037

Other changes

  • Use Java 17 as baseline DBZ-7224

  • Document new MariaDB connector DBZ-7786

  • Move to Maven 3.9.8 as build requirement DBZ-7965

  • Add disclaimer that PostProcessors and CustomConverters are Debezium source connectors only DBZ-8031

  • Typos in Bug report template DBZ-8038

  • Find an alternative way to manually deploy the connector with local changes that is compatible with Debezium 3 DBZ-8046