The return value from the `TransformSupplier` should always be a `new YourTransformer(..)` as there will be one for each task and they are potentially processed on multiple threads.
On Mon, 24 Sep 2018 at 16:07 Stéphane. D. <der...@gmail.com> wrote: > Hi, > > We just stumbled upon an issue with KStream.transform() where we had a > runtime error with this code: > > ``` > DeduplicationTransformer<X, Y, , > transformer = new > DeduplicationTransformer<>(...); > stream.transform(() -> transformer, ...) > ``` > > The error is: > Failed to process stream task 0_0 due to the following error: > java.lang.IllegalStateException: This should not happen as timestamp() > should only be called while a record is processed > > Whereas simply inlining the creation of the Transformer works: > > ``` > stream.transform(() -> new DeduplicationTransformer<>(...), ...) > ``` > > Is this behavior expected? > > > I guess that's why tranform() takes a wrapper, to construct it when needed? > > Why does this happen? Is there some kind of global reference used > internally (only construct during the execution) ? > > > Thanks, > > Stéphane >