Rajan - I understand your concern about memory. Lin, Penghui, and I also acknowledged that none of the implementations solve every use case. Each implementation has its limitation and concerns.
I am trying to find a way for both parties (You and Lin) can explore different implementations. An abstraction/interface sounds like a reasonable approach to take, no? We have a similar situation in the delayed message scheduler. The current queue-based implementation works for certain workloads but doesn't work for delayed messages spanning a long time span. But the delayed message scheduler is an interface that allows people to implement a better solution (i.e. a hashed-wheel-based implementation). Does that make sense? Thanks, Sijie On Thu, Jan 28, 2021 at 11:54 AM Rajan Dhabalia <rdhaba...@apache.org> wrote: > My only point was, if the broker tries to manage more than 10M unack > message ranges (per subscription) then the broker has to face many negative > consequences in terms of memory and CPU, and then it will require to build > additional debt to solve such problems. Therefore, I consider 10M unack > message ranges are more than enough for any application, if not then we > should prevent those applications to not go beyond such thresholds to > handle the back-pressure of unack messages and not allowing applications to > build a cache at broker-side. > > We have seen multiple issues in the past due to large numbers of unack > messages in memory and to handle such abuse, brokers have configurations to > allow max unack messages per consumer (maxUnackedMessagesPerConsumer: > default 50K) and subscription (maxUnackedMessagesPerSubscription: default > 200K). So, brokers already have large enough limits to store unack messages > and going beyond that limit causes scaling issues in brokers, so better to > keep the system stable and safe. > > Thanks, > Rajan > > On Thu, Jan 28, 2021 at 9:50 AM Sijie Guo <guosi...@gmail.com> wrote: > > > Agreed with Lin. I think we should try to abstract this into an interface > > and allow different implementations. > > > > Rajan - what is your real concern making it abstract? > > > > - Sijie > > > > On Wed, Jan 27, 2021 at 7:37 PM Lin Lin <lin...@apache.org> wrote: > > > > > Hi Rajan, > > > Thank you for your PR. > > > The main difference lies in whether 10MB is enough and memory doubling > > > problem, which is caused by different business scenarios. > > > In some business scenario, the QPS of 20k/s is considered to be very > low, > > > and requests exceeding this order of magnitude are common. > > > If it is only increased to 10MB, the time exceeding the threshold only > > > changes from 30 seconds to 60 seconds, and the problems in PIP are > still > > > not solved. > > > "large enough" may be base on your scenario, and in some scenario, it > is > > > not enough in most cases... > > > Because the problem has not been solved, I suggest to abstract, so that > > > different people can choose. > > > Your PR is an improvement to the current performance, there is no > > conflict > > > between them. > > > > > > Thanks > > > > > > On 2021/01/27 03:50:07, Rajan Dhabalia <rdhaba...@apache.org> wrote: > > > > I have created a PR which should allow brokers to store up to 10M > > > > unack-message ranges. I think it should be large enough for any > > usecases > > > > and probably now, we might not need to introduce abstraction for ack > > > > management to avoid any further complexity in message acknowledgement > > > path > > > > as well. > > > > https://github.com/apache/pulsar/pull/9292 > > > > > > > > Thanks, > > > > Rajan > > > > > > > > >