Skip to content
This repository has been archived by the owner on Mar 3, 2023. It is now read-only.

Add ack and fail to Streamlet API #2909

Closed
mjschmidt opened this issue May 25, 2018 · 7 comments · May be fixed by #3217
Closed

Add ack and fail to Streamlet API #2909

mjschmidt opened this issue May 25, 2018 · 7 comments · May be fixed by #3217

Comments

@mjschmidt
Copy link
Contributor

The default behavior for heron streamlet is not to ack/fail messages. Upon further inspection we realized this is not only the default, but the only option for Streamlet as it only uses emit, which will not ack and fail messages. This currently isn't configurable.

The code can be seen here:

What steps would be required to add this functionality? This would aid greatly in us transitioning to Streamlet.

@jerrypeng
Copy link
Contributor

@mjschmidt so one of the design choices we made for the streamlet API was to move away from the concept of spouts/bolts towards the concepts of sources and sinks to better support state and effectively once processing provided chandy/lamport style state snapshotting. Acking was more natural spout and bolt APIs where managed state by heron isn't available while not so much for the functional style APIs used in Streamlets Acking also doesn't gel well with the state implementation since state snapshotting is provided by chandy/lamport global snapshotting. Perhaps @srkukarni can also chime in.

@mjschmidt
Copy link
Contributor Author

mjschmidt commented May 31, 2018

@jerrypeng So lets say I as a Heron analytic developer want to guarantee that all of the data sent from one container is received in the next? In the topology model this was done through ack and fail. It is a capability that will be required for us to move to the Streamlet API/Heron. If we put a pull request in and have it as a feature that is turned off by default would you guys be open to a merge request? If not how can we get similar functionality from Streamlet?

@kramasamy
Copy link
Contributor

@jerrypeng @maosongfu @nwangtw - can you respond?

@kramasamy
Copy link
Contributor

@mjschmidt - this is due to the underlying bolt implementation that streamlet maps into. Currently these bolts do not ack or fail when the topology is set to ATLEAST_ONCE. We need to fix this.

@jerrypeng
Copy link
Contributor

jerrypeng commented Jun 11, 2018

@mjschmidt so just to be clear. The streamlet API currently does not have a way for users to explicitly fail a tuple but it will automatically ack tuples for you but there is no call back to ack at the source. If you want, I am open to the idea of having a source that have ack and fail callbacks

@mjschmidt
Copy link
Contributor Author

Cool. Knowing that we can get this pulled back into the master branch means we can work on implementing it. We will stay connected in the heronstreaming channel as we move forward. Thanks!

@nwangtw
Copy link
Contributor

nwangtw commented Jun 12, 2018 via email

jmark99 added a commit to jmark99/incubator-heron that referenced this issue Feb 15, 2019
Updated issue apache#2909 to only output the message ID for log messages
produced by nextTuple, ack, and fail within SupplierSource and
ComplexSource.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants