[
https://issues.apache.org/jira/browse/KAFKA-12694?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Chris Cranford updated KAFKA-12694:
-----------------------------------
Description:
When making a call to {{SchemaBuilder#defaultValue(Object)}} a
{{DataException}} will be thrown if the value if of type {{STRUCT}} due to
schema mismatch. This is because the method passes a reference of {{this}},
implying a {{SchemaBuilder}} to the {{ConnectSchema#validate}} method which
later does an equality check which expects the passed schema to be an actual
{{ConnectSchema}} rather than a {{SchemaBuilder}}.
{code}
Caused by: org.apache.kafka.connect.errors.SchemaBuilderException: Invalid
default value
at
org.apache.kafka.connect.data.SchemaBuilder.defaultValue(SchemaBuilder.java:131)
at
io.debezium.relational.TableSchemaBuilder.addField(TableSchemaBuilder.java:374)
at
io.debezium.relational.TableSchemaBuilder.lambda$create$2(TableSchemaBuilder.java:119)
at
java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
at
java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
at
java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
at
java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at
java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at
java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
at
java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
at
java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at
java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
at
io.debezium.relational.TableSchemaBuilder.create(TableSchemaBuilder.java:117)
at
io.debezium.relational.RelationalDatabaseSchema.buildAndRegisterSchema(RelationalDatabaseSchema.java:130)
at
io.debezium.connector.oracle.OracleDatabaseSchema.applySchemaChange(OracleDatabaseSchema.java:70)
at
io.debezium.pipeline.EventDispatcher$SchemaChangeEventReceiver.schemaChangeEvent(EventDispatcher.java:460)
at
io.debezium.relational.RelationalSnapshotChangeEventSource.lambda$createSchemaChangeEventsForTables$2(RelationalSnapshotChangeEventSource.java:273)
... 10 more
Caused by: org.apache.kafka.connect.errors.DataException: Struct schemas do not
match.
at
org.apache.kafka.connect.data.ConnectSchema.validateValue(ConnectSchema.java:252)
at
org.apache.kafka.connect.data.ConnectSchema.validateValue(ConnectSchema.java:213)
at
org.apache.kafka.connect.data.SchemaBuilder.defaultValue(SchemaBuilder.java:129)
... 26 more
{code}
was:
When making a call to {{SchemaBuilder#defaultValue(Object)}} a
{{DataException}} will be thrown if the value if of type {{STRUCT}} due to
schema mismatch. This is because the method passes a reference of {{this}},
implying a {{SchemaBuilder}} to the {{ConnectSchema#validate}} method which
later does an equality check which expects the passed schema to be an actual
{{ConnectSchema}} rather than a {{SchemaBuilder}}.
{code}
Caused by: org.apache.kafka.connect.errors.SchemaBuilderException: Invalid
default valueCaused by: org.apache.kafka.connect.errors.SchemaBuilderException:
Invalid default value at
org.apache.kafka.connect.data.SchemaBuilder.defaultValue(SchemaBuilder.java:131)
at
io.debezium.relational.TableSchemaBuilder.addField(TableSchemaBuilder.java:374)
at
io.debezium.relational.TableSchemaBuilder.lambda$create$2(TableSchemaBuilder.java:119)
at
java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
at
java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
at
java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
at
java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at
java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at
java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
at
java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
at
java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at
java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
at
io.debezium.relational.TableSchemaBuilder.create(TableSchemaBuilder.java:117)
at
io.debezium.relational.RelationalDatabaseSchema.buildAndRegisterSchema(RelationalDatabaseSchema.java:130)
at
io.debezium.connector.oracle.OracleDatabaseSchema.applySchemaChange(OracleDatabaseSchema.java:70)
at
io.debezium.pipeline.EventDispatcher$SchemaChangeEventReceiver.schemaChangeEvent(EventDispatcher.java:460)
at
io.debezium.relational.RelationalSnapshotChangeEventSource.lambda$createSchemaChangeEventsForTables$2(RelationalSnapshotChangeEventSource.java:273)
... 10 moreCaused by: org.apache.kafka.connect.errors.DataException: Struct
schemas do not match. at
org.apache.kafka.connect.data.ConnectSchema.validateValue(ConnectSchema.java:252)
at
org.apache.kafka.connect.data.ConnectSchema.validateValue(ConnectSchema.java:213)
at
org.apache.kafka.connect.data.SchemaBuilder.defaultValue(SchemaBuilder.java:129)
... 26 more
{code}
> Specifying a struct-based defaultValue on a SchemaBuilder causes a
> DataException
> --------------------------------------------------------------------------------
>
> Key: KAFKA-12694
> URL: https://issues.apache.org/jira/browse/KAFKA-12694
> Project: Kafka
> Issue Type: Bug
> Components: KafkaConnect
> Affects Versions: 2.7.0
> Reporter: Chris Cranford
> Priority: Major
>
> When making a call to {{SchemaBuilder#defaultValue(Object)}} a
> {{DataException}} will be thrown if the value if of type {{STRUCT}} due to
> schema mismatch. This is because the method passes a reference of {{this}},
> implying a {{SchemaBuilder}} to the {{ConnectSchema#validate}} method which
> later does an equality check which expects the passed schema to be an actual
> {{ConnectSchema}} rather than a {{SchemaBuilder}}.
> {code}
> Caused by: org.apache.kafka.connect.errors.SchemaBuilderException: Invalid
> default value
> at
> org.apache.kafka.connect.data.SchemaBuilder.defaultValue(SchemaBuilder.java:131)
> at
> io.debezium.relational.TableSchemaBuilder.addField(TableSchemaBuilder.java:374)
> at
> io.debezium.relational.TableSchemaBuilder.lambda$create$2(TableSchemaBuilder.java:119)
> at
> java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
> at
> java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
> at
> java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
> at
> java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
> at
> java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
> at
> java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
> at
> java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
> at
> java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
> at
> java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
> at
> io.debezium.relational.TableSchemaBuilder.create(TableSchemaBuilder.java:117)
> at
> io.debezium.relational.RelationalDatabaseSchema.buildAndRegisterSchema(RelationalDatabaseSchema.java:130)
> at
> io.debezium.connector.oracle.OracleDatabaseSchema.applySchemaChange(OracleDatabaseSchema.java:70)
> at
> io.debezium.pipeline.EventDispatcher$SchemaChangeEventReceiver.schemaChangeEvent(EventDispatcher.java:460)
> at
> io.debezium.relational.RelationalSnapshotChangeEventSource.lambda$createSchemaChangeEventsForTables$2(RelationalSnapshotChangeEventSource.java:273)
> ... 10 more
> Caused by: org.apache.kafka.connect.errors.DataException: Struct schemas do
> not match.
> at
> org.apache.kafka.connect.data.ConnectSchema.validateValue(ConnectSchema.java:252)
> at
> org.apache.kafka.connect.data.ConnectSchema.validateValue(ConnectSchema.java:213)
> at
> org.apache.kafka.connect.data.SchemaBuilder.defaultValue(SchemaBuilder.java:129)
> ... 26 more
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)