apache/flink · error · IllegalStateException

Unrecognized Kryo registration serializer definition type: {

Error message

Unrecognized Kryo registration serializer definition type: {serializerDefinitionType}

What it means

When a KryoSerializer snapshot is written, each Kryo registration serializes its serializer definition tagged with a type (CLASS or INSTANCE). The write-side switch in KryoSerializerSnapshotData hits its default branch only if serializerDefinitionType is neither CLASS nor INSTANCE — i.e. the enum was corrupted or an unrecognized value reached the writer. This is effectively an internal invariant violation, not a user configuration error.

Source

Thrown at flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/kryo/KryoSerializerSnapshotData.java:256

                        Class<? extends Serializer<?>> serializerClass =
                                kryoRegistration.getSerializerClass();
                        assert serializerClass != null;
                        out.writeUTF(serializerClass.getName());
                        break;
                    }
                case INSTANCE:
                    {
                        try (final DataOutputViewStream outViewWrapper =
                                new DataOutputViewStream(out)) {
                            InstantiationUtil.serializeObject(
                                    outViewWrapper,
                                    kryoRegistration.getSerializableSerializerInstance());
                        }
                        break;
                    }
                default:
                    {
                        throw new IllegalStateException(
                                "Unrecognized Kryo registration serializer definition type: "
                                        + serializerDefinitionType);
                    }
            }
        }

        static KryoRegistration tryReadKryoRegistration(
                DataInputView in, ClassLoader userCodeClassLoader) throws IOException {

            String registeredClassname = in.readUTF();
            Class<?> registeredClass;
            try {
                registeredClass = Class.forName(registeredClassname, true, userCodeClassLoader);
            } catch (ClassNotFoundException e) {
                LOG.warn(
                        "Cannot find registered class "
                                + registeredClassname
                                + " for Kryo serialization in classpath;"

View on GitHub (pinned to 2f3c205e92)

Solutions

  1. Ensure all Flink modules in the job and cluster run the SAME Flink version (no mixed jars on the classpath).
  2. If state was written by an older/newer snapshot format, do not restore it directly — use the state processor API to migrate or discard the checkpoint.
  3. Report as a Flink bug (JIRA) if reproducible with a single clean version — include the checkpoint metadata.
Defensive patterns

Strategy: validation

Prevention

When it happens

Trigger: An internal caller constructs the write path with an out-of-range serializer-definition ordinal; enum values added to the definition-type enum without updating this switch; memory/state corruption feeding an invalid tag into the snapshot writer.

Common situations: Practically never seen from user code; would surface only from incompatible Flink internal versions mixing snapshot formats, or tampered/corrupted checkpoint metadata.

Related errors


AI-assisted analysis of apache/flink@2f3c205e92 (2026-08-14). Data as JSON: /api/errors/486e40f169d9d457. Report an issue: GitHub.