Hi All, Would "Preemptive" Mode make sense?
On Wed, May 11, 2022 at 8:56 AM Matteo Merli <matteo.me...@gmail.com> wrote: > +1 > > > On Tue, May 10, 2022 at 5:56 AM Enrico Olivelli <eolive...@gmail.com> > wrote: > > > Hello, > > I created a new PIP about a new AccessMode for the Producer. > > https://github.com/apache/pulsar/issues/15528 > > > > This is the PR: https://github.com/apache/pulsar/pull/15488 > > > > Honestly I don't like the name "ExclusiveWithFencing", any suggestion > > is really appreciated. > > > > Enrico > > > > 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 > > > -- > -- > Matteo Merli > <matteo.me...@gmail.com> > -- Best Regards, Neng