Hi all,

I'd like to propose KIP-478 (https://cwiki.apache.org/confluence/x/2SkLBw).

This proposal would add output type bounds to the Processor interface
in Kafka Streams, which enables static checking of a number of useful
properties:
* A processor B that consumes the output of processor A is actually
expecting the same types that processor A produces.
* A processor that happens to use a typed store is actually emitting
the same types that it is storing.
* A processor is simply forwarding the expected types in all code paths.
* Processors added via the Streams DSL, which are not permitted to
forward results at all are statically prevented from doing so by the
compiler

Internally, we can use the above properties to achieve a much higher
level of confidence in the Streams DSL implementation's correctness.
Actually, while doing the POC, I found a few bugs and mistakes, which
become structurally impossible with KIP-478.

Additionally, the stronger types dramatically improve the
self-documentation of our Streams internal implementations, which
makes it much easier for new contributors to ramp up with confidence.

Thanks so much for your consideration!
-John

Reply via email to