GitHub user KIC added a comment to the discussion: Pulsar functions should be 
able to return none and multiple values

@jerrypeng thanks for the clarification, I did not get that returning null is 
an option :-) 

regarding returning multiple events, I am not saying it is impossible but it is 
a bit trickier then that:

> This method returns a CompletableFuture. You can always wait for the 
> CompletableFuture to complete before updating the state. If there is a send 
> failure, throw an exception, and in EFFECTIVELY_ONCE, the function instance 
> will restart it self and replay the last message. 

Imagine if you have 10 futures, 5 completed, 5 failed
You did not store the state (you would only if all futures completed)
You throw an exception
Function restarts (EFFECTIVELY_ONCE)

Now you have the same sate as the one you have had but not stored (function 
needs to be deterministic). But you have sent 5 of 10 events already, so you 
need to know that you only have to send messages 6 - 10 plus finally store the 
state. This could be done by querying the last message/event on the target 
topic. And this would even hold if only the state store would fail. Because in 
such a case you throw an exception at stateStore(), in the redo call of the 
function you see 10 of 10 messages were sent, so you just store the state.

However I just think it would be much more user friendly if this is all handled 
by the function caller and you could optimize accordingly while the project 
evolves.

GitHub link: 
https://github.com/apache/pulsar/discussions/19657#discussioncomment-5137527

----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to: [email protected]

Reply via email to