Chris Cranford created KAFKA-12694:
--------------------------------------

             Summary: 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


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}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to