The PIP passes with 3 bindings +1: Enrico, Matteo and Lari. I will rebase the patch and commit it (it has already been reviewed)
Thank you very much Enrico Il giorno mer 18 mag 2022 alle ore 08:51 Lari Hotari <lhot...@apache.org> ha scritto: > > +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 > >