-
Bug
-
Resolution: Done
-
Blocker
-
1.9.0.Final
-
None
-
False
-
None
-
False
-
What Debezium connector do you use and what version?
Db2 connector 1.9.0 version
What is the connector configuration?
Simplest one
{ "name": "db2-connector-5", "config": { "connector.class" : "io.debezium.connector.db2.Db2Connector", "tasks.max" : "1", "database.server.name" : "<>", "database.hostname" : "<>", "database.port" : "<>", "database.user" : "<>", "database.password" : "<>", "database.dbname" : "<>", "table.include.list": "<>", "database.history.kafka.bootstrap.servers" : "broker:29092", "database.history.kafka.topic": "schema-changes.<>", "include.schema.changes": "false", "value.converter.schemas.enable": "false", "key.converter.schemas.enable": "false" } }
What is the captured database version and mode of depoyment?
(E.g. on-premises, with a specific cloud provider, etc.)
on premise, Db2 11.5
What behaviour do you expect?
The producer send all the events to kafka with the table information
What behaviour do you see?
The schema is not properly created and fail with this error
{{[2022-04-13 14:29:45,477] ERROR Producer failure (io.debezium.pipeline.ErrorHandler) kafka-connect | io.debezium.DebeziumException: io.debezium.DebeziumException: org.apache.kafka.connect.errors.SchemaBuilderException: Invalid default value kafka-connect | at io.debezium.pipeline.source.AbstractSnapshotChangeEventSource.execute(AbstractSnapshotChangeEventSource.java:85) kafka-connect | at io.debezium.pipeline.ChangeEventSourceCoordinator.doSnapshot(ChangeEventSourceCoordinator.java:155) kafka-connect | at io.debezium.pipeline.ChangeEventSourceCoordinator.executeChangeEventSources(ChangeEventSourceCoordinator.java:137) kafka-connect | at io.debezium.pipeline.ChangeEventSourceCoordinator.lambda$start$0(ChangeEventSourceCoordinator.java:109) kafka-connect | at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) kafka-connect | at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) kafka-connect | at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) kafka-connect | at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) kafka-connect | at java.base/java.lang.Thread.run(Thread.java:829) kafka-connect | Caused by: io.debezium.DebeziumException: org.apache.kafka.connect.errors.SchemaBuilderException: Invalid default value kafka-connect | at io.debezium.relational.RelationalSnapshotChangeEventSource.lambda$createSchemaChangeEventsForTables$2(RelationalSnapshotChangeEventSource.java:280) kafka-connect | at io.debezium.pipeline.EventDispatcher.dispatchSchemaChangeEvent(EventDispatcher.java:310) kafka-connect | at io.debezium.relational.RelationalSnapshotChangeEventSource.createSchemaChangeEventsForTables(RelationalSnapshotChangeEventSource.java:275) kafka-connect | at io.debezium.relational.RelationalSnapshotChangeEventSource.doExecute(RelationalSnapshotChangeEventSource.java:118) kafka-connect | at io.debezium.pipeline.source.AbstractSnapshotChangeEventSource.execute(AbstractSnapshotChangeEventSource.java:76) kafka-connect | ... 8 more kafka-connect | Caused by: org.apache.kafka.connect.errors.SchemaBuilderException: Invalid default value kafka-connect | at org.apache.kafka.connect.data.SchemaBuilder.defaultValue(SchemaBuilder.java:131) kafka-connect | at io.debezium.relational.TableSchemaBuilder.addField(TableSchemaBuilder.java:412) kafka-connect | at io.debezium.relational.TableSchemaBuilder.lambda$create$2(TableSchemaBuilder.java:147) kafka-connect | at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) kafka-connect | at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177) kafka-connect | at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655) kafka-connect | at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) kafka-connect | at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) kafka-connect | at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) kafka-connect | at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) kafka-connect | at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) kafka-connect | at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497) kafka-connect | at io.debezium.relational.TableSchemaBuilder.create(TableSchemaBuilder.java:145) kafka-connect | at io.debezium.relational.RelationalDatabaseSchema.buildAndRegisterSchema(RelationalDatabaseSchema.java:135) kafka-connect | at io.debezium.connector.db2.Db2DatabaseSchema.applySchemaChange(Db2DatabaseSchema.java:49) kafka-connect | at io.debezium.pipeline.EventDispatcher$SchemaChangeEventReceiver.schemaChangeEvent(EventDispatcher.java:547) kafka-connect | at io.debezium.relational.RelationalSnapshotChangeEventSource.lambda$createSchemaChangeEventsForTables$2(RelationalSnapshotChangeEventSource.java:277) kafka-connect | ... 12 more kafka-connect | Caused by: org.apache.kafka.connect.errors.DataException: Invalid Java object for schema "io.debezium.time.Date" with type INT32: class java.lang.String kafka-connect | at org.apache.kafka.connect.data.ConnectSchema.validateValue(ConnectSchema.java:242) kafka-connect | at org.apache.kafka.connect.data.ConnectSchema.validateValue(ConnectSchema.java:213) kafka-connect | at org.apache.kafka.connect.data.SchemaBuilder.defaultValue(SchemaBuilder.java:129) kafka-connect | ... 28 more }}
Do you see the same behaviour using the latest relesead Debezium version?
(Ideally, also verify with latest Alpha/Beta/CR version)
I haven't validate with it due to ccranfor@redhat.com has requested to me create the Jira ticket
Do you have the connector logs, ideally from start till finish?
(You might be asked later to provide DEBUG/TRACE level log)
I just add an attachment with one of the errors. But I have identified two:
Caused by: org.apache.kafka.connect.errors.DataException: Invalid Java object for schema "io.debezium.time.Date" with type INT32: class java.lang.String
and
Caused by: org.apache.kafka.connect.errors.DataException: Invalid Java object for schema "org.apache.kafka.connect.data.Decimal" with type BYTES: class java.lang.String
How to reproduce the issue using our tutorial deployment?
Maybe creating the following schemas (the red text is the problem):
KZ1# char(36) PRIMARY KEY NOT NULL,
GILT_AB date NOT NULL,
GILT_BIS date NOT NULL,
DOMWERT1 char(1) NOT NULL,
DOMWERT1ANZ char(1) DEFAULT ' ' NOT NULL,
KZKERNDOMW char(1) DEFAULT ' ' NOT NULL,
DOMNAME varchar(18) NOT NULL,
SORTIERUNG decimal(3,0) DEFAULT 0.0 NOT NULL,
DOMTEXT varchar(254) DEFAULT '' NOT NULL,
DOMTEXT_EXT varchar(254) DEFAULT '' NOT NULL,
PLS_LISTE varchar(254) DEFAULT '' NOT NULL,
FIRMENLISTE varchar(254) DEFAULT '' NOT NULL
Or
VTAR# char(36) NOT NULL,
PSCHABL# char(36) NOT NULL,
GEWINNVERBAND char(7) DEFAULT ' ' NOT NULL,
VERWENDTYP char(1) DEFAULT ' ' NOT NULL,
PROVTARIFGRP char(2) DEFAULT ' ' NOT NULL,
GILTAB date DEFAULT '0001-01-01' NOT NULL,
GILTBIS date DEFAULT '0001-01-01' NOT NULL,
CONSTRAINT SQL180423181051950 PRIMARY KEY (VTAR#,PSCHABL#)