Hi all, 

>> Null could make sense as the default value, but it just means that the
>> config key is not set explicitly.
>> Given that, it's probably simpler to just allow
>> log.cleanup.policy to be empty and properly support it?
Thanks for the explanation. I have updated the KIP accordingly: in Kafka 4.x, 
cleanup.policy 
can be set to an empty list with a warning message emitted; however, in Kafka 
5.0, setting an 
empty list for cleanup.policy will no longer be allowed.

> For another, there is an additional issue which could be handled by this
> KIP. Some configs have "string" type, but they are handled as a LIST. For
> example, `early.start.listeners`, `security.providers`. Could we change
> their type to LIST to benefit from this KIP? I mean to make them
> non-nullable.
I have also updated the KIP to include the tables detailing the changes for 
LIST-type configuration 
default values and the migration from STRING-type to LIST-type configurations.

Best Regards,
Jiunn-Yang

> Chia-Ping Tsai <chia7...@gmail.com> 於 2025年7月8日 清晨7:06 寫道:
> 
> hi all,
> 
> JR11. There is an existing config interceptor.classes that allows an empty
>> list and it makes intuitive sense. So, it seems that it's ok to support
>> empty lists in general. Given that, it's probably simpler to just allow
>> log.cleanup.policy to be empty and properly support it?
> 
> 
> yes, that is what I meant before. Additionally, the `LIST` type should not
> accept "null". Instead, we should use an empty list as the default value.
> For example, `sasl.oauthbearer.expected.audience` should never has "null"
> value. That could eliminate the null check.
> 
> For another, there is an additional issue which could be handled by this
> KIP. Some configs have "string" type, but they are handled as a LIST. For
> example, `early.start.listeners`, `security.providers`. Could we change
> their type to LIST to benefit from this KIP? I mean to make them
> non-nullable.
> 
> Best,
> Chia-Ping
> 
> 
> 
> Jun Rao <j...@confluent.io.invalid> 於 2025年7月8日 週二 上午5:56寫道:
> 
>> Hi, Jiunn-Yang,
>> 
>> Thanks for the reply.
>> 
>> JR10. Regarding supporting the null value, I am not sure how one could set
>> a null value in a config file. For example, if you set the following in a
>> config file.
>>  configkey=
>> The value of configkey will be an empty list, instead of null, right?
>> 
>> Null could make sense as the default value, but it just means that the
>> config key is not set explicitly.
>> 
>> JR11. There is an existing config interceptor.classes that allows an empty
>> list and it makes intuitive sense. So, it seems that it's ok to support
>> empty lists in general. Given that, it's probably simpler to just allow
>> log.cleanup.policy to be empty and properly support it?
>> 
>> Jun
>> 
>> 
>> 
>> On Fri, Jul 4, 2025 at 5:13 AM 黃竣陽 <s7133...@gmail.com> wrote:
>> 
>>> Hello Jun,
>>> 
>>> JR10: The sasl.oauthbearer.expected.audience is optional, that is right,
>>> so I think
>>> that we can allow null value, but not allow the empty
>>> 
>>> JR11: In this KIP, the goal is to address configurations that should not
>>> accept empty arrays.
>>> We want to prevent users from passing in an empty list when it's not
>>> valid. I believe there are two
>>> main scenarios to consider:
>>> 
>>> 1. Nullable but not empty:
>>> The parameter allows either a null value or a non-empty list. In this
>>> case,
>>> if the user provides an empty list, we should throw a ConfigException.
>>> 
>>> 2. Non-null and non-empty only: The parameter must always contain a
>>> non-empty list — null is also
>>> invalid. In this case, if the user provides either a null or an empty
>>> list, we should throw a ConfigException.
>>> 
>>> Therefore, I want to prevent scenarios where users can pass in an empty
>>> list.
>>> 
>>> JR12: I’ve updated NonEmptyListValidator to include an allowNull
>> property.
>>> This allows us to specify
>>> whether a configuration permits null values or not.
>>> 
>>> JR13: I have updated the table
>>> 
>>> 
>>>> Jun Rao <j...@confluent.io.INVALID> 於 2025年7月1日 清晨6:30 寫道:
>>>> 
>>>> Hi, Jiunn-Yang,
>>>> 
>>>> Sorry for the late reply. A few more comments.
>>>> 
>>>> JR10. The doc for sasl.oauthbearer.expected.audience says that it's
>>>> optional. So an empty list seems to be valid.
>>>> 
>>>> JR11. Thinking a bit more. If we are going to support empty lists in
>>>> general, it's probably more consistent to just allow log.cleanup.policy
>>> to
>>>> be empty as Luke suggested, instead of introducing a new option None.
>>>> 
>>>> JR12. NonEmptyListValidator allows the input to be null. It seems that
>>>> only ssl.cipher.suites allows null. The remaining ones shouldn't be
>> null.
>>>> 
>>>> JR13. The table is very helpful. Could you also describe the old/new
>>>> behavior for each config with an empty list or duplicate entry?
>>>> 
>>>> Thanks,
>>>> 
>>>> Jun
>>>> 
>>>> 
>>>> 
>>>> On Mon, Jun 30, 2025 at 6:02 AM 黃竣陽 <s7133...@gmail.com> wrote:
>>>> 
>>>>> Hello all,
>>>>> 
>>>>> I am manually bumping this thread. Any feedback would be appreciated.
>>>>> 
>>>>> Best regards,
>>>>> Jiunn-Yang
>>>>> 
>>>>>> 黃竣陽 <s7133...@gmail.com> 於 2025年5月28日 晚上11:21 寫道:
>>>>>> 
>>>>>> 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