Hi Till, Thanks, for the explanation!
How do I express if I don't want to collect any elements in the async collector? Like 0 output from a flatmap. Also it doesn't seem to be specified anywhere that the AsyncCollector is "completed", it is just a collector. You should be able to collect multiple things to it, but it actually won't work if you try to do that from more than one Future. I wonder if it would make sense to change the API to make this more specific otherwise we might keep a lot of unnecessary state or have potential leaks depending on the usage. Just my thoughts, now I also understand the current rationale just I didn't completely get it for the first pass. Gyula Till Rohrmann <trohrm...@apache.org> ezt írta (időpont: 2017. febr. 20., H, 15:35): > Hi Gyula, > > the assumption is that the AsyncCollector is either completed by the user > or, if you have a timeout defined, that it will be completed with a timeout > exception. This means that if you have no timeout defined, then you have to > make sure that the collector is completed. Otherwise you will have > lingering state which is never cleared. In that sense it follows the > semantics of normal futures. > > What do you mean by creating more than one future? More than one future > which completes the AsyncCollector? If that's the case, then the first > future which completes will also complete the AsyncCollector and the result > of the other future should be ignored. > > Cheers, > Till > > > On Mon, Feb 20, 2017 at 2:53 PM, Gyula Fóra <gyf...@apache.org> wrote: > > > Hi, > > > > I was looking at the AsyncFunction interface and try to wrap my head > around > > the implementation and the assumptions and I have some questions, maybe > > somebody could help me out :) > > > > What happens if the user does not collect any data or set a future to do > so > > in the invoke method? > > Also what happens if I create more than one Future? > > > > It seems that the "streamRecordBufferEntry" logic assumes that there > will > > be a Future that eventually collects 1 thing or the user does this > > directly. > > Do I understand correctly? If not I am probably missing the part where > the > > buffer entry is removed immediately if no async request was made. > > > > Thank you! > > Gyula > > >