Hongshun Wang created FLINK-35567:
-------------------------------------
Summary: CDC BinaryWriter cast NullableSerializerWrapper error
Key: FLINK-35567
URL: https://issues.apache.org/jira/browse/FLINK-35567
Project: Flink
Issue Type: Bug
Components: Flink CDC
Affects Versions: cdc-3.2.0
Reporter: Hongshun Wang
Fix For: cdc-3.1.1
Current, we will generate data type serializers by
org.apache.flink.cdc.runtime.typeutils.BinaryRecordDataGenerator#BinaryRecordDataGenerator(org.apache.flink.cdc.common.types.DataType[]),
which will put into a
NullableSerializerWrapper.
{code:java}
//代码占位符
public BinaryRecordDataGenerator(DataType[] dataTypes) {
this(
dataTypes,
Arrays.stream(dataTypes)
.map(InternalSerializers::create)
.map(NullableSerializerWrapper::new)
.toArray(TypeSerializer[]::new));
} {code}
However, when use in BinaryWriter#write, if type is ARRAY/MAP/ROW, will cast
NullableSerializerWrapper to
ArrayDataSerializer/TypeSerializer<MapData>/TypeSerializer<RecordData>.
A exception will be thrown:
{code:java}
java.lang.ClassCastException:
org.apache.flink.cdc.runtime.serializer.NullableSerializerWrapper cannot be
cast to org.apache.flink.cdc.runtime.serializer.data.ArrayDataSerializer
at
org.apache.flink.cdc.runtime.serializer.data.writer.BinaryWriter.write(BinaryWriter.java:134)
at
org.apache.flink.cdc.runtime.typeutils.BinaryRecordDataGenerator.generate(BinaryRecordDataGenerator.java:89)
{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)