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