Hi everyone,

I would like to start a discussion on a proposal to improve the default
behavior of the pulsar-admin namespaces set-persistence command.

*The Problem:*

Currently, if an operator uses set-persistence to change a namespace
policy, but omits the --ml-mark-delete-max-rate flag, the command
implicitly resets the mark-delete rate to 0 (unlimited). This is a
potentially dangerous side effect, as it can lead to unexpected high I/O
load on BookKeeper, especially in clusters with high acknowledgement rates.
This behavior acts as a "footgun" for operators who may not be aware of
this side effect.

*The Proposal:*

My proposal is to change this behavior to be safer and more intuitive.
Instead of defaulting to 0, if the --ml-mark-delete-max-rate flag is
omitted during a set-persistence call, the broker should apply its own
configured default value from the managedLedgerMaxMarkDeleteRate setting in
broker.conf (which is typically 1.0).

This prevents the accidental disabling of this important throttling
mechanism. The ability for a user to explicitly set the rate to 0 would be
retained.

I've written a full PIP with the detailed motivation, proposed changes. You
can find the draft here: https://github.com/apache/pulsar/pull/24425

I would appreciate any feedback, thoughts, or concerns from the community
on this proposal.

Thanks,

- Penghui

Reply via email to