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