From a 2026-07-03 code review. Low-priority polish:
StreamEventDeserializer tracks deserializationErrors as a plain transient long (invisible in the Flink UI) and uses a % 100 magic number , use a Flink Counter.
ProtobufKryoSerializer.read() calls type.getMethod("parseFrom", ...) reflectively per record , cache the Method.
- The 30s window is a hardcoded literal while every other tunable is externalized.
ProtobufKryoSerializer (the most bug-prone class) has NO round-trip test , add one.
((SerializerConfigImpl) ...) cast reaches into an Impl class , fragile across Flink versions.
From a 2026-07-03 code review. Low-priority polish:
StreamEventDeserializertracksdeserializationErrorsas a plaintransient long(invisible in the Flink UI) and uses a% 100magic number , use a FlinkCounter.ProtobufKryoSerializer.read()callstype.getMethod("parseFrom", ...)reflectively per record , cache theMethod.ProtobufKryoSerializer(the most bug-prone class) has NO round-trip test , add one.((SerializerConfigImpl) ...)cast reaches into an Impl class , fragile across Flink versions.