-
Bug
-
Resolution: Done
-
Major
-
None
-
None
-
False
-
None
-
False
Bug report
For bug reports, provide this information, please:
What Debezium connector do you use and what version?
debezium/debezium-connector-sqlserver:2.2.1
What is the connector configuration?
{ "connector.class": "io.debezium.connector.sqlserver.SqlServerConnector", "tasks.max": "1", "database.hostname": "sqlserver", "database.port": "1433", "database.user": "sa", "database.password": "Password!", "database.names" : "testDB", "snapshot.mode":"schema_only", "signal.data.collection": "testDB.dbo.debezium_signal", "table.include.list" : "dbo.debezium_signal,dbo.customers", "database.encrypt": "false", "topic.prefix": "server1", "schema.history.internal.kafka.bootstrap.servers": "broker:9092", "schema.history.internal.kafka.topic": "schema-changes.inventory" }
What is the captured database version and mode of deployment?
Docker mcr.microsoft.com/mssql/server:2019-latest
What behaviour do you see?
Using a signal with or condition like this:
INSERT INTO dbo.debezium_signal (id, type, data) VALUES('ad-hoc-customers_1', 'execute-snapshot', '{"data-collections": ["testDB.dbo.customers"],"type":"incremental", "additional-condition":"(date >= ''2022-01-01'' and date < ''2022-12-31'') or (otherdate >= ''2022-01-01'' and otherdate < ''2022-12-31'')"}');
The adhoc snapshot goes into an infinite loop where data is produce infinitely:
10:01:38 ℹ️ 💯 Get number of records in topic server1.testDB.dbo.customers 7 10:01:49 ℹ️ 💯 Get number of records in topic server1.testDB.dbo.customers 25 10:01:59 ℹ️ 💯 Get number of records in topic server1.testDB.dbo.customers 37 10:02:09 ℹ️ 💯 Get number of records in topic server1.testDB.dbo.customers 49 10:02:20 ℹ️ 💯 Get number of records in topic server1.testDB.dbo.customers 61 10:02:30 ℹ️ 💯 Get number of records in topic server1.testDB.dbo.customers 73 10:02:40 ℹ️ 💯 Get number of records in topic server1.testDB.dbo.customers 85 10:02:51 ℹ️ 💯 Get number of records in topic server1.testDB.dbo.customers 97 10:03:01 ℹ️ 💯 Get number of records in topic server1.testDB.dbo.customers ...
Doing the select manually gives:
{{}}
select id from testDB.dbo.customers where (date >= '2022-01-01' and date < '2022-12-31') or (otherdate >= '2022-01-01' and otherdate < '2022-12-31'); select id from testDB.dbo.customers where (date >= '2022-01-01' and date < '2022-12-31'); select id from testDB.dbo.customers where (otherdate >= '2022-01-01' and otherdate < '2022-12-31'); id ----------- 1017 1020 1028 1033 1034 1035 (6 rows affected) id ----------- 1017 1020 1028 1033 1034 1035 (6 rows affected) id ----------- 1017 1020 1028 1033 1034 1035 (6 rows affected)
{{}}
If I remove the OR condition
"additional-condition": "otherdate >= ''2022-01-01'' and otherdate < ''2022-12-31'')"
Then I get only get a fixed amount of records:
10:09:47 ℹ️ 💯 Get number of records in topic server1.testDB.dbo.customers 13 10:09:57 ℹ️ 💯 Get number of records in topic server1.testDB.dbo.customers 13 10:10:07 ℹ️ 💯 Get number of records in topic server1.testDB.dbo.customers 13 10:10:18 ℹ️ 💯 Get number of records in topic server1.testDB.dbo.customers 13 10:10:28 ℹ️ 💯 Get number of records in topic server1.testDB.dbo.customers 13 10:10:39 ℹ️ 💯 Get number of records in topic server1.testDB.dbo.customers 13 10:10:49 ℹ️ 💯 Get number of records in topic server1.testDB.dbo.customers 13 10:11:00 ℹ️ 💯 Get number of records in topic server1.testDB.dbo.customers 13
What behaviour do you expect?
Not seeing an infinite loop when using OR condition in additional-condition
Do you see the same behaviour using the latest relesead Debezium version?
I'm using latest available on the Confluent Hub, which is 2.2.1. If you think it is fixed n later version, I can give it a try.
Do you have the connector logs, ideally from start till finish?
(You might be asked later to provide DEBUG/TRACE level log)
Yes, see attached. This is 100% reproducible on my side.
- links to
-
RHEA-2024:129636 Red Hat build of Debezium 2.5.4 release