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