Hello Jun,

I have updated the KIP and introduced a new validator, NonEmptyListValidator, 
which ensures that the 
provided list is either null or a non-empty list without duplicate entries. 
I’ve also listed the configurations that will 
be validated using this logic. Please feel free to share any feedback or 
suggestions.

Best Regards,
Jiunn-Yang

> Jun Rao <j...@confluent.io.INVALID> 於 2025年5月23日 凌晨2:29 寫道:
> 
> Hi, Jiunn-Yang,
> 
> It seems there are quite a few other configs of type list (e.g. several SSL
> related ones). It would be useful to understand if empty lists are valid
> for them or not.
> 
> Thanks,
> 
> Jun
> 
> On Tue, May 13, 2025 at 10:12 AM Jun Rao <j...@confluent.io> wrote:
> 
>> Hi, Luke,
>> 
>> Thanks for the reply.
>> 
>> "My thought is that this behavior has been existed
>> for years (maybe after "cleanup.policy" was introduced?), there could be
>> users relying on the empty cleanup.policy for a long time. "
>> 
>> If you do a google search on "kafka infinite retention", you will get
>> links like
>> https://stackoverflow.com/questions/39735036/make-kafka-topic-log-retention-permanent
>> and
>> https://www.reddit.com/r/apachekafka/comments/mpz4bp/kafka_retention_question/,
>> both pointing to setting the retention time and retention size to -1 to
>> achieve this goal. So, it seems that if a user intentionally wants infinite
>> retention, it's more likely they will use that approach instead of setting
>> cleanup.policy to empty. On the other hand, our API/tools make it possible
>> for users to make a mistake by inadvertently leaving the config value empty.
>> 
>> Thanks,
>> 
>> Jun
>> 
>> On Mon, May 12, 2025 at 11:38 PM Luke Chen <show...@gmail.com> wrote:
>> 
>>> Hi Jun,
>>> 
>>>> Regarding the motivation, currently, we never documented that an empty
>>> cleanup.policy implies infinite retention. In fact, if one leaves
>>> cleanup.policy empty, it actually breaks remote storage since it will stop
>>> the cleaning based on local retention size and time too. So, leaving
>>> cleanup.policy empty is probably more like a user mistake than an
>>> intentional choice. Based on this assumption, the idea behind the KIP is
>>> to
>>> fail an empty cleanup.policy so that the user is aware of this likely
>>> mistake and provide a new option None for users wanting infinite retention
>>> to opt in explicitly.
>>> 
>>> While we never documented the empty cleanup.policy implies infinite
>>> retention, we also never documented (or failed) the empty cleanup.policy
>>> is
>>> an invalid configuration. My thought is that this behavior has been
>>> existed
>>> for years (maybe after "cleanup.policy" was introduced?), there could be
>>> users relying on the empty cleanup.policy for a long time. It is not good
>>> to break the backward compatibility in a minor release version (ex:
>>> v4.1.0). Even though we think we are fixing a long existing bug, it could
>>> be a surprise to users.
>>> 
>>> 
>>>> We could also consider supporting an empty cleanup.policy by fixing the
>>> issue in remote storage. But then the user may never realize this if it's
>>> a
>>> mistake.
>>> 
>>> Good point! I agree we need to fix it!
>>> 
>>> 
>>> Hi Chia-Ping,
>>> 
>>>> We can print warnings for empty cleanup.policy in 4.x and in 5.0 we
>>> throw
>>> exception directly to make it fail fast
>>> 
>>> This suggestion looks good to me!
>>> 
>>> Thank you.
>>> Luke
>>> 
>>> On Tue, May 13, 2025 at 2:14 PM Chia-Ping Tsai <chia7...@apache.org>
>>> wrote:
>>> 
>>>> hi all,
>>>> 
>>>> Given Luke mentioned the existence of use cases, it is worth considering
>>>> the compatibility issue. In fact, I had previously encountered this use
>>>> case but advised customers to utilize retention configurations instead.
>>>> 
>>>>> We could also consider supporting an empty cleanup.policy by fixing
>>> the
>>>>> issue in remote storage. But then the user may never realize this if
>>>> it's a
>>>>> mistake.
>>>> 
>>>> Good catch! The "empty" or "none" wouldn't make sense for remote
>>> storage.
>>>> I've opened KAFKA-19273 to ensure topics with tiered storage use a valid
>>>> delete policy.
>>>> 
>>>> Best,
>>>> Chia-Ping
>>>> 
>>>> 
>>>> On 2025/05/12 19:06:10 Jun Rao wrote:
>>>>> Hi, Luke,
>>>>> 
>>>>> Regarding the motivation, currently, we never documented that an empty
>>>>> cleanup.policy implies infinite retention. In fact, if one leaves
>>>>> cleanup.policy empty, it actually breaks remote storage since it will
>>>> stop
>>>>> the cleaning based on local retention size and time too. So, leaving
>>>>> cleanup.policy empty is probably more like a user mistake than an
>>>>> intentional choice. Based on this assumption, the idea behind the KIP
>>> is
>>>> to
>>>>> fail an empty cleanup.policy so that the user is aware of this likely
>>>>> mistake and provide a new option None for users wanting infinite
>>>> retention
>>>>> to opt in explicitly.
>>>>> 
>>>>> We could also consider supporting an empty cleanup.policy by fixing
>>> the
>>>>> issue in remote storage. But then the user may never realize this if
>>>> it's a
>>>>> mistake.
>>>>> 
>>>>> Thanks,
>>>>> 
>>>>> Jun
>>>>> 
>>>>> 
>>>>> On Sun, May 11, 2025 at 7:53 PM Luke Chen <show...@gmail.com> wrote:
>>>>> 
>>>>>> Hi Jiunn-Yang,
>>>>>> 
>>>>>> Thanks for the KIP.
>>>>>> 
>>>>>> Comments:
>>>>>> 1. "it is acceptable because an empty cleanup.policy is considered
>>>> invalid
>>>>>> in Kafka. Therefore, this trade-off is justified."
>>>>>> Could you explain more about this? Why is this trade-off justified?
>>>>>> If we think the empty cleanup.policy is invalid in kafka, why do we
>>>> provide
>>>>>> an additional "none" option to users in this KIP?
>>>>>> FYI, there are indeed use cases that need to keep all history data
>>>> without
>>>>>> a cleanup policy.
>>>>>> 
>>>>>> 2. Following (1), I agree we should fail fast for empty
>>>>>> "group.coordinator.rebalance.protocols" and "process.roles" configs
>>>> since
>>>>>> they are invalid.
>>>>>> But about "cleanup.policy", I don't see a persuasive reason why we
>>>> should
>>>>>> break backward compatibility to change it.
>>>>>> "This provides a clear and direct way to configure Kafka to retain
>>> all
>>>> log
>>>>>> segments without any automatic cleanup."
>>>>>> This is the motivation we mentioned in the KIP, but to me, backward
>>>>>> compatibility is much more important than "a clear and direct way to
>>>> config
>>>>>> kafka".
>>>>>> Do we really have to change the "cleanup.policy" config?
>>>>>> 
>>>>>> Thanks.
>>>>>> Luke
>>>>>> 
>>>>>> 
>>>>>> On Wed, May 7, 2025 at 2:17 AM Jun Rao <j...@confluent.io.invalid>
>>>> wrote:
>>>>>> 
>>>>>>> Hi, Jiunn-Yang,
>>>>>>> 
>>>>>>> Thanks for the updated KIP. It looks good to me.
>>>>>>> 
>>>>>>> Jun
>>>>>>> 
>>>>>>> On Tue, May 6, 2025 at 4:58 AM 黃竣陽 <s7133...@gmail.com> wrote:
>>>>>>> 
>>>>>>>> Hi Jun, chia
>>>>>>>> 
>>>>>>>> Thanks for all the comments. They have all been addressed in the
>>>>>> updated
>>>>>>>> KIP.
>>>>>>>> 
>>>>>>>> I've removed all deprecated-related sections. Additionally, an
>>>>>> exception
>>>>>>>> will now be thrown if a
>>>>>>>> developer passes an empty validStrings list to the inNonEmpty
>>>> method.
>>>>>>>> 
>>>>>>>> Best Regards,
>>>>>>>> Jiunn-Yang
>>>>>>>> 
>>>>>>>>> Chia-Ping Tsai <chia7...@gmail.com> 於 2025年5月6日 凌晨12:46 寫道:
>>>>>>>>> 
>>>>>>>>> hi Jiunn-Yang
>>>>>>>>> 
>>>>>>>>> The `inNonEmpty` is used to prevent users pass empty config,
>>> so
>>>>>> should
>>>>>>> it
>>>>>>>>> be non-empty too?
>>>>>>>>> 
>>>>>>>>> For example, `inNonEmpty()` should throw exception directly.
>>>>>>>>> 
>>>>>>>>> Best,
>>>>>>>>> Chia-Ping
>>>>>>>>> 
>>>>>>>>> Jun Rao <j...@confluent.io.invalid> 於 2025年5月6日 週二 上午12:28寫道:
>>>>>>>>> 
>>>>>>>>>> Hi, Jiunn-Yang,
>>>>>>>>>> 
>>>>>>>>>> Thanks for the reply. There are still references to the
>>>> deprecated
>>>>>>>> method.
>>>>>>>>>> 
>>>>>>>>>> "stop relying on the deprecated methods"
>>>>>>>>>> "Finally, the deprecated method will be removed in Kafka 5.0"
>>>>>>>>>> 
>>>>>>>>>> Thanks,
>>>>>>>>>> 
>>>>>>>>>> Jun
>>>>>>>>>> 
>>>>>>>>>> On Sat, May 3, 2025 at 7:42 AM 黃竣陽 <s7133...@gmail.com>
>>> wrote:
>>>>>>>>>> 
>>>>>>>>>>> Hi Jun, chia,
>>>>>>>>>>> 
>>>>>>>>>>> Thanks for all the comments. They have all been addressed in
>>>> the
>>>>>>>> updated
>>>>>>>>>>> KIP.
>>>>>>>>>>> 
>>>>>>>>>>> Best Regards,
>>>>>>>>>>> Jiunn-Yang
>>>>>>>>>>> 
>>>>>>>>>>>> Chia-Ping Tsai <chia7...@gmail.com> 於 2025年5月3日 凌晨2:03 寫道:
>>>>>>>>>>>> 
>>>>>>>>>>>> hi Jiunn-Yang
>>>>>>>>>>>> 
>>>>>>>>>>>> in the "Compatibility, Deprecation, and Migration Plan",
>>>> could you
>>>>>>> add
>>>>>>>>>>>> description to remind readers that "clean.policy=" should
>>> be
>>>>>>> replaced
>>>>>>>>>> by
>>>>>>>>>>>> "clean.policy=none" if they do want to disable delete and
>>>> compact.
>>>>>>>>>>>> 
>>>>>>>>>>>> Best,
>>>>>>>>>>>> Chia-Ping
>>>>>>>>>>>> 
>>>>>>>>>>>> Jun Rao <j...@confluent.io.invalid> 於 2025年5月3日 週六
>>> 上午1:55寫道:
>>>>>>>>>>>> 
>>>>>>>>>>>>> Hi, Jiunn-Yang,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> It's fine not to deprecate ValidList#in for now. Could you
>>>> update
>>>>>>> the
>>>>>>>>>>> KIP
>>>>>>>>>>>>> completely? There are still references to deprecation.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Jun
>>>>>>>>>>>>> 
>>>>>>>>>>>>> On Fri, May 2, 2025 at 4:59 AM 黃竣陽 <s7133...@gmail.com>
>>>> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Hi Jun,
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> I don’t think we should deprecate the ValidList#in
>>> method,
>>>> as
>>>>>>> there
>>>>>>>>>> may
>>>>>>>>>>>>> be
>>>>>>>>>>>>>> future scenarios where we want
>>>>>>>>>>>>>> to allow list configs to be empty. It’s useful to have
>>> both
>>>>>>> methods:
>>>>>>>>>> in
>>>>>>>>>>>>>> (which allows empty lists)
>>>>>>>>>>>>>> and inNonEmpty (which enforces non-empty lists).
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Just a minor comment. It would be useful to document
>>> that
>>>>>> during
>>>>>>>>>>>>> upgrade,
>>>>>>>>>>>>>>> if cleanup.policy is empty, the broker will fail to
>>> start.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> I’ve updated the KIP accordingly.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Best Regards,
>>>>>>>>>>>>>> Jiunn-Yang
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Jun Rao <j...@confluent.io.INVALID> 於 2025年5月2日 凌晨12:50
>>> 寫道:
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Hi, Jiunn-Yang,
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Thanks for the reply. Sounds good.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Just a minor comment. It would be useful to document
>>> that
>>>>>> during
>>>>>>>>>>>>> upgrade,
>>>>>>>>>>>>>>> if cleanup.policy is empty, the broker will fail to
>>> start.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Jun
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> On Thu, May 1, 2025 at 8:40 AM 黃竣陽 <s7133...@gmail.com>
>>>> wrote:
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Hello Jun,
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Since ValidList is a public API, we need to maintain
>>>> backward
>>>>>>>>>>>>>>>> compatibility. Therefore, the isEmptyAllowed flag is
>>>>>> necessary.
>>>>>>>>>>>>>>>> We can update the signature of isNonEmpty() to remove
>>> the
>>>>>>> boolean
>>>>>>>>>>>>>>>> parameter.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Best Regards,
>>>>>>>>>>>>>>>> Jiunn-Yang
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Jun Rao <j...@confluent.io.INVALID> 於 2025年5月1日 凌晨4:17
>>>> 寫道:
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Hi, Jiunn-Yang,
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Thanks for the reply.
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Do we really need isEmptyAllowed? It's awkward since
>>> the
>>>>>> method
>>>>>>>>>> name
>>>>>>>>>>>>> is
>>>>>>>>>>>>>>>>> inNonEmpty. Also, it's not clear when it's set to
>>> true.
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Jun
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> On Fri, Apr 25, 2025 at 6:26 AM 黃竣陽 <
>>> s7133...@gmail.com>
>>>>>>> wrote:
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Hi Jun,
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Thank you for pointing that out.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> I have revised the KIP as follows:
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> “In this case, the change does not introduce new
>>> invalid
>>>>>>>>>>>>>> configurations
>>>>>>>>>>>>>>>> or
>>>>>>>>>>>>>>>>>> prevent any currently valid setup.
>>>>>>>>>>>>>>>>>> The main behavioral difference is that we now
>>> explicitly
>>>>>>> throw a
>>>>>>>>>>>>>>>>>> ConfigException  during the storage format validation
>>>> phase
>>>>>>>>>>>>>>>>>> instead of relying on the current behavior.”
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> This reflects the correct behavior.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Best Regards,
>>>>>>>>>>>>>>>>>> Jiunn-Yang
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Jun Rao <j...@confluent.io.INVALID> 於 2025年4月25日
>>>> 凌晨1:17 寫道:
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Hi, Jiunn-Yang,
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> "The main behavioral difference introduced by this
>>>> change
>>>>>> is
>>>>>>>>>> that
>>>>>>>>>>> a
>>>>>>>>>>>>>>>>>>> ConfigException  will now be thrown during the
>>> storage
>>>>>> format
>>>>>>>>>>>>>>>> validation
>>>>>>>>>>>>>>>>>>> phase, rather than during server startup."
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> It seems that currently formating the storage
>>> already
>>>> fails
>>>>>>> if
>>>>>>>>>>>>>>>>>>> group.coordinator.rebalance.protocols and
>>> process.roles
>>>>>> are
>>>>>>>>>>> empty.
>>>>>>>>>>>>>> It
>>>>>>>>>>>>>>>>>> just
>>>>>>>>>>>>>>>>>>> gets a different exception.
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Jun
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> On Thu, Apr 24, 2025 at 5:32 AM 黃竣陽 <
>>>> s7133...@gmail.com>
>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> Hi Jun, chia,
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> Thanks for your feedback.
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> I add a new section for this change:
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> - Validation for
>>>> group.coordinator.rebalance.protocols and
>>>>>>>>>>>>>>>> process.roles
>>>>>>>>>>>>>>>>>>>> will be
>>>>>>>>>>>>>>>>>>>> moved from the server startup phase to the storage
>>>> format
>>>>>>>>>> phase.
>>>>>>>>>>>>>>>>>>>> - For cleanup.policy, setting an empty list will
>>> now
>>>> be
>>>>>>>>>>> considered
>>>>>>>>>>>>>>>>>> invalid
>>>>>>>>>>>>>>>>>>>> and will
>>>>>>>>>>>>>>>>>>>> result in a ConfigException during storage format
>>>> phase.
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> Best Regards,
>>>>>>>>>>>>>>>>>>>> Jiunn-Yang
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> Jun Rao <j...@confluent.io.INVALID> 於 2025年4月24日
>>>> 凌晨4:44
>>>>>> 寫道:
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> Hi, Jiunn-Yang,
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> Thanks for the reply.
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> Q2. It's true that
>>>> group.coordinator.rebalance.protocols
>>>>>>> and
>>>>>>>>>>>>>>>>>>>> process.roles
>>>>>>>>>>>>>>>>>>>>> configurations can't be empty right now. With this
>>>> KIP,
>>>>>> the
>>>>>>>>>> user
>>>>>>>>>>>>>> will
>>>>>>>>>>>>>>>>>>>>> probably get a different (and more accurate)
>>>> exception.
>>>>>> It
>>>>>>>>>> will
>>>>>>>>>>>>> be
>>>>>>>>>>>>>>>>>> useful
>>>>>>>>>>>>>>>>>>>>> to document that.
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> Regarding cleanup.policy, I kind of agree with
>>>> Chia-Ping.
>>>>>>> If
>>>>>>>> a
>>>>>>>>>>>>> user
>>>>>>>>>>>>>>>>>>>> leaves
>>>>>>>>>>>>>>>>>>>>> cleanup.policy empty, it's more likely to be a
>>>> mistake
>>>>>> than
>>>>>>>> an
>>>>>>>>>>>>>>>>>> intention.
>>>>>>>>>>>>>>>>>>>>> If we automatically treat it as None, the user
>>> will
>>>> never
>>>>>>>>>>> realize
>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>>>> mistake. Throwing an exception will let the user
>>>> realize
>>>>>>>> there
>>>>>>>>>>>>> is a
>>>>>>>>>>>>>>>>>>>> mistake.
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> Jun
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> On Wed, Apr 23, 2025 at 8:26 AM Chia-Ping Tsai <
>>>>>>>>>>>>> chia7...@gmail.com
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> hi Jiunn-Yang,
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> Thanks for the KIP, and I understand that
>>>> maintaining
>>>>>>>>>>>>>> compatibility
>>>>>>>>>>>>>>>> is
>>>>>>>>>>>>>>>>>>>>>> important.
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> However, according to the documentation, we don't
>>>> allow
>>>>>> an
>>>>>>>>>>> empty
>>>>>>>>>>>>>>>> value
>>>>>>>>>>>>>>>>>>>> for
>>>>>>>>>>>>>>>>>>>>>> the cleanup.policy. Hence, should we consider
>>>> throwing
>>>>>> an
>>>>>>>>>>>>>> exception
>>>>>>>>>>>>>>>>>> for
>>>>>>>>>>>>>>>>>>>> an
>>>>>>>>>>>>>>>>>>>>>> empty value in version 4.x? This could streamline
>>>> the
>>>>>> code
>>>>>>>>>> and
>>>>>>>>>>>>>> avoid
>>>>>>>>>>>>>>>>>> an
>>>>>>>>>>>>>>>>>>>>>> extra deprecation cycle.
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> Best,
>>>>>>>>>>>>>>>>>>>>>> Chia-Ping
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> Jun Rao <j...@confluent.io.invalid> 於 2025年4月23日
>>> 週三
>>>>>>>> 上午6:33寫道:
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> Hi, Jiunn-Yang,
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> Regarding "The none policy will not delete or
>>>> compact
>>>>>> any
>>>>>>>>>>>>>>>> segments",
>>>>>>>>>>>>>>>>>> we
>>>>>>>>>>>>>>>>>>>>>>> should be more accurate. We won't delete
>>> segments
>>>> based
>>>>>>> on
>>>>>>>>>>>>>>>>>>>>>>> log.retention.bytes/log.retention.ms, but we
>>>> should
>>>>>>>>>> continue
>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>> delete
>>>>>>>>>>>>>>>>>>>>>>> segments based on log.local.retention.bytes/
>>>>>>>>>> log.retention.ms.
>>>>>>>>>>>>>>>>>>>> Otherwise,
>>>>>>>>>>>>>>>>>>>>>>> we
>>>>>>>>>>>>>>>>>>>>>>> risk running out of local disk space when remote
>>>>>> storage
>>>>>>> is
>>>>>>>>>>>>>>>> enabled.
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> Jun
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> On Tue, Apr 22, 2025 at 9:45 AM Jun Rao <
>>>>>>> j...@confluent.io>
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> Hi, Jiunn-Yang,
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> Thanks for the reply.
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> Q2. What about existing empty values for
>>>>>>>>>>>>>>>>>>>>>>>> group.coordinator.rebalance.protocols and
>>>>>> process.roles
>>>>>>>>>>> during
>>>>>>>>>>>>>>>>>>>> upgrade?
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> Jun
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> On Tue, Apr 22, 2025 at 7:29 AM 黃竣陽 <
>>>>>> s7133...@gmail.com
>>>>>>>> 
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>> Hello Jun,
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>> Thanks for review this KIP.
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>> Q1 & Q3:
>>>>>>>>>>>>>>>>>>>>>>>>> I’ve updated the method name accordingly and
>>>> revised
>>>>>>> the
>>>>>>>>>>>>>>>>>>>>>> cleanup.policy
>>>>>>>>>>>>>>>>>>>>>>>>> documentation
>>>>>>>>>>>>>>>>>>>>>>>>> to clarify that the none policy cannot be used
>>>> with
>>>>>> any
>>>>>>>>>>> other
>>>>>>>>>>>>>>>>>> policy.
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>> Q2:
>>>>>>>>>>>>>>>>>>>>>>>>> For users currently using an empty
>>>> cleanup.policy,
>>>>>> the
>>>>>>>>>>>>> approach
>>>>>>>>>>>>>>>> is
>>>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>>>>>>>>> apply the none policy
>>>>>>>>>>>>>>>>>>>>>>>>> during the preProcessParsedConfig step.
>>>>>> Additionally, a
>>>>>>>>>>>>> warning
>>>>>>>>>>>>>>>>>>>>>> message
>>>>>>>>>>>>>>>>>>>>>>>>> will be emitted to inform users
>>>>>>>>>>>>>>>>>>>>>>>>> of the upcoming change.
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>> Best Regards,
>>>>>>>>>>>>>>>>>>>>>>>>> Jiunn-Yang
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>> Jun Rao <j...@confluent.io.INVALID> 於
>>> 2025年4月22日
>>>>>>> 凌晨4:52
>>>>>>>>>> 寫道:
>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>> Hi, Jiunn-Yang,
>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>> Thanks for the KIP. A few comments.
>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>> 1. It's fine to introduce a new value None
>>> for
>>>>>>>>>>>>> cleanup.policy.
>>>>>>>>>>>>>>>> But
>>>>>>>>>>>>>>>>>>>>>> now
>>>>>>>>>>>>>>>>>>>>>>>>> not
>>>>>>>>>>>>>>>>>>>>>>>>>> all value combinations are valid. For
>>> example,
>>>> None
>>>>>>>> can't
>>>>>>>>>>> be
>>>>>>>>>>>>>>>> used
>>>>>>>>>>>>>>>>>>>>>> with
>>>>>>>>>>>>>>>>>>>>>>>>>> Delete or Compact. It would be useful to
>>>> document
>>>>>>> that.
>>>>>>>>>>>>>>>>>>>>>>>>>> 2. What's the behavior during upgrade when an
>>>>>> existing
>>>>>>>>>>>>> config
>>>>>>>>>>>>>>>> has
>>>>>>>>>>>>>>>>>> an
>>>>>>>>>>>>>>>>>>>>>>>>> empty
>>>>>>>>>>>>>>>>>>>>>>>>>> list.
>>>>>>>>>>>>>>>>>>>>>>>>>> 3. inWithEmptyCheck: It's not clear what the
>>>> empty
>>>>>>> check
>>>>>>>>>>>>> does.
>>>>>>>>>>>>>>>> How
>>>>>>>>>>>>>>>>>>>>>>> about
>>>>>>>>>>>>>>>>>>>>>>>>>> sth like inNonEmpty ?
>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>> Jun
>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>> On Tue, Apr 15, 2025 at 8:25 AM 黃竣陽 <
>>>>>>> s7133...@gmail.com
>>>>>>>>> 
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello everyone,
>>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>>> I would like to start a discussion on
>>> KIP-1161:
>>>>>>>>>>>>>> cleanup.policy
>>>>>>>>>>>>>>>>>>>>>>>>> shouldn't
>>>>>>>>>>>>>>>>>>>>>>>>>>> be empty
>>>>>>>>>>>>>>>>>>>>>>>>>>> <
>>> https://cwiki.apache.org/confluence/x/HArXF>
>>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>>> This proposal aims to improve the
>>>> cleanup.policy
>>>>>>>>>>>>>> configuration.
>>>>>>>>>>>>>>>>>>>>>>>>> Currently,
>>>>>>>>>>>>>>>>>>>>>>>>>>> this setting should not be left empty.
>>>>>>>>>>>>>>>>>>>>>>>>>>> Therefore, there are two proposed
>>> improvements:
>>>>>>>>>>>>>>>>>>>>>>>>>>> 1. Update ValidList to validate whether an
>>>> empty
>>>>>> list
>>>>>>>> is
>>>>>>>>>>>>>>>> allowed.
>>>>>>>>>>>>>>>>>>>>>>>>>>> 2. Introduce a new 'none' value for
>>>> cleanup.policy.
>>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>>> Best Regards,
>>>>>>>>>>>>>>>>>>>>>>>>>>> Jiunn-Yang
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>> 
>> 

Reply via email to