Thank you Ramzan for driving this improvement to Pulsar! Good work!

Naming Suggestion: Could we call this "managed transactions" for
Pulsar Functions instead of "automatic transactions"?

I provided a review with some suggestions:
https://github.com/apache/pulsar/pull/24704

It could be easier to review code in a separate implementation PR,
however, covering all implementation level details isn't necessary.

It is useful to handle the main changes in the implementation and
describe the implementation strategy.

For example, I added a comment about keeping the transactional
handling similar to current processing so that asynchronous functions
would also be supported.

A poorly documented feature of Pulsar Functions is that it supports
asynchronous processing. This is really important in achieving higher
performance since it allows having more than 1 outstanding message in
processing. Async function support was added in
https://github.com/apache/pulsar/pull/6684. By default there can be
1000 outstanding messages in processing and this can be controlled
with the "maxPendingAsyncRequests" setting. Supporting transactions
for asynchronous processing should also be part of the scope of this
PIP so that the implementation doesn't unnecessarily divert between
"managed transactions" and non-transactional processing.

One interesting implementation detail is that this work requires the
PIP-407 changes
https://github.com/apache/pulsar/blob/master/pip/pip-407.md that just
landed in the Pulsar master branch with
https://github.com/apache/pulsar/pull/23942.

Looking forward to seeing PIP-439 move forward!

-Lari


On Fri, 5 Sept 2025 at 11:53, Ramzan MAGOMADOW

<ramzan.magoma...@rbinternational.com> wrote:
>
> Dear Pulsar Community!
>
> I would like to start a formal discussion on PIP-439.
>
> This proposal aims to enhance Pulsar Functions with transaction capabilities, 
> enabling atomic operations across multiple topics without requiring code 
> changes to function implementations. The proposal builds on Pulsar's existing 
> transaction system to provide exactly-once processing semantics for Functions.
>
>   Key aspects of the proposal include:
>   1. Automatic transaction wrapping for Functions through configuration 
> settings
>   2. Support for transactional publishing to multiple output topics
>   3. Transactional acknowledgment of input messages
>   4. Transaction timeout configuration
>
>  This proposal continues the discussion started in the previous thread: 
> https://lists.apache.org/thread/rll8qyovpd7t9v5yxth25qo44zksbgkn
>
>  The complete proposal is available at: 
> https://github.com/apache/pulsar/pull/24704
>
> I welcome your feedback, questions, and suggestions on this proposal. Please 
> share your thoughts on the design approach, implementation details, or any 
> considerations I may have overlooked.
>
> Best regards,
> Ramzan Magomadow
> This message and any attachment ("the Message") are confidential. If you have 
> received the Message in error, please notify the sender immediately and 
> delete the Message from your system, any use of the Message is forbidden. 
> Correspondence via e-mail is primarily for information purposes. RBI neither 
> makes nor accepts legally binding statements via e-mail unless explicitly 
> agreed otherwise. Information pursuant to ? 14 Austrian Companies Code: 
> Raiffeisen Bank International AG; Registered Office: Am Stadtpark 9, 1030 
> Vienna, Austria; Company Register Number: FN 122119m at the Commercial Court 
> of Vienna (Handelsgericht Wien).
>
> Classification: GENERAL

Reply via email to