+1

-Lari

On 2022/05/16 07:09:19 Enrico Olivelli wrote:
> This is the VOTE thread for PIP-161
> 
> This is the GH issue: https://github.com/apache/pulsar/issues/15528
> This is the PR: https://github.com/apache/pulsar/pull/15488
> 
> Motivation
> 
> In PIP-68 we introduced two access modes for the Producer:
> 
> Exclusive: The producer is the only one who can publish to the topic.
> Fail if there is another Exclusive Producer connected to the topic
> while creating the new Producer.
> WaitForExclusive: Like Exclusive, but instead of Failing we are going
> to wait for the current Exclusive Producer to disconnect.
> 
> Those two modes are very powerful and allow you to perform some kind
> of Locking on a topic.
> 
> We are missing a third more, in which the Producer always succeeds to
> acquire the Exclusive lock on the topic by fencing out any other
> Producer that is connected, even the current Exclusive Producer and
> the other Producers waiting in WaitForExclusive mode.
> 
> Goal
> 
> The modes that are available with PIP-68 require a writer to acquire
> the lock and release it as soon as possible in order to allow other
> clients to write to the topic.
> 
> With the new mode it will be possible to implement locking in another
> way: the Producer holds the lock until someone else steals it. This
> way when you have very low contention you can achieve better latency
> for writes because you don't have to acquire the lock every time you
> want to write,.
> 
> API and Wire protocol Changes
> 
> Changes:
> 
> a new constant on the Wire Protocol for AccessMode
> a new constant in the Java Client API AccessMode#ExclusiveWithFencing
> 
> Implementation
> 
> The new mode will behave mostly like AccessMode#Exclusive but instead
> of failing in case of the presence of other Producers it will force
> all of the current connected Producers to be removed and invalidated
> (they will see ProducerFencedException).
> 
> Reject Alternatives
> 
> None
> 
> Enrico
> 

Reply via email to