[
https://issues.apache.org/jira/browse/FLINK-30656?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17807968#comment-17807968
]
Hangxiang Yu commented on FLINK-30656:
--
We should support to remain some messages for TypeSerializerSchemaCompatibility
just like SchemaCompatibility in Avro.
Then every TypeSerializer could defined their own message about compatibility.
I have two proposals:
1. Add new method called TypeSerializerSchemaCompatibility#incompatible and
#compatibleAfterMigration to support message, e.g.
TypeSerializerSchemaCompatibility#incompatible(String message). And deprecated
related old methods.
{code:java}
public static TypeSerializerSchemaCompatibility incompatible(String
message) {
return new TypeSerializerSchemaCompatibility<>(Type.INCOMPATIBLE, message,
null);
} {code}
2. Add a new method called TypeSerializerSchemaCompatibility#withMessage:
{code:java}
private TypeSerializerSchemaCompatibility withMessage(String message) {
this.message = message;
return this;
} {code}
Proposal 1 behaves just like SchemaCompatibility in Avro who forces caller to
add message. But since TypeSerializerSchemaCompatibility is a PublicEvolving
API, maybe we need a FLIP firstly?
Proposal 2 just add a new method so that we will not break change, but every
callers (including some custom-defined TypeSerializers) should call it manually
because it will not fail when compile.
[~leonard] WDYT?
> Provide more logs for schema compatibility check
>
>
> Key: FLINK-30656
> URL: https://issues.apache.org/jira/browse/FLINK-30656
> Project: Flink
> Issue Type: Improvement
> Components: API / Type Serialization System
>Reporter: Hangxiang Yu
>Assignee: Hangxiang Yu
>Priority: Major
>
> Currently, we have very few logs and exception info when checking schema
> compatibility.
> It's difficult to see why the compatibility is not compatible, especially for
> some complicated nested serializers.
> For example, for map serializer, when it's not compatible, we may only see
> below without other information:
> {code:java}
> Caused by: org.apache.flink.util.StateMigrationException: The new state
> serializer
> (org.apache.flink.api.common.typeutils.base.MapSerializer@e95e076a) must not
> be incompatible with the old state serializer
> (org.apache.flink.api.common.typeutils.base.MapSerializer@c33b100f). {code}
> So I think we could add more infos when checking the compatibility.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)