-
Bug
-
Resolution: Done
-
Major
-
3.2.1.Final, 3.3.0.Alpha1, 3.3.0.Alpha2
-
None
-
False
-
-
False
-
-
In DBZ-9118 we introduced an exception as part of the validation step to make sure the log position is valid at start-up rather than letting this be thrown later during the streaming phase of the connector.
Unfortunately for Oracle, the exception message, as written, would fail because the connector does not store all required data attributes for a Source Struct in the offsets, a lot of this is runtime driven, and therefore this caused the following exception:
2025-08-30 09:36:06,690 ERROR OracleConnectorIT||engine org.apache.kafka.connect.errors.DataException: Invalid value: null used for required field: "schema", schema type: STRING [io.debezium.connector.oracle.OracleConnectorIT] org.apache.kafka.connect.errors.DataException: Invalid value: null used for required field: "schema", schema type: STRING at org.apache.kafka.connect.data.ConnectSchema.validateValue(ConnectSchema.java:224) at org.apache.kafka.connect.data.ConnectSchema.validateValue(ConnectSchema.java:217) at org.apache.kafka.connect.data.Struct.put(Struct.java:216) at org.apache.kafka.connect.data.Struct.put(Struct.java:203) at io.debezium.connector.oracle.OracleSourceInfoStructMaker.struct(OracleSourceInfoStructMaker.java:51) at io.debezium.connector.oracle.OracleSourceInfoStructMaker.struct(OracleSourceInfoStructMaker.java:15) at io.debezium.connector.AbstractSourceInfo.struct(AbstractSourceInfo.java:79) at io.debezium.pipeline.CommonOffsetContext.getSourceInfo(CommonOffsetContext.java:58)
The exception should be written to not make any assumptions about what data is in the offsets and what methods are or are not valid, and instead should use the toString implementation we often rely on across the remainder of the code base to represent the attributes for the position in the message.