Hi Jun, Chia

>> Also, it would be useful to add a compatibility column in the table. If a
>> value is formally disallowed, it would be useful to compare the old and the
>> new behavior (e.g. a different exception is thrown, etc).
I’ve updated the table to show which exceptions will be thrown for each 
behavior.

>>> I don't understand the point of "5.0". Could you please share more details?
>>> It seems to me changing the type or default value should be fine in minor
>>> release if we don't break the existing property files.
I don't think this requires any compatibility considerations, so I’ve removed 
the Kafka 5.0 changes section.

>>> `max.connections.per.ip.overrides` is parsed as "map" type, so using `LIST`
>>> instead of `String` does not seems to make sense.
I have removed the config from KIP

Best Regards,
Jiunn-Yang

> Chia-Ping Tsai <chia7...@apache.org> 於 2025年7月9日 晚上10:26 寫道:
> 
>> For ssl.cipher.suites, changing the default value from null to empty is
>> actually a breaking change. According to the doc, null means that all the
>> available cipher suites are supported. I am thinking that we should
>> continue to allow null as the default since it could represent a state
>> different from empty.
> 
> "Empty list" seems to be a weird case. It appears to signify that no cipher 
> suites are accepted. However, in the codebase, an empty list is handled as if 
> all available cipher suites are supported [0]. We should not support the case 
> of "no supported cipher suite," as it doesn't make sense.
> 
> In short, changing the default value from null to empty does not break the 
> behavior.
> 
> [0] 
> https://github.com/apache/kafka/blob/dabde76ebf105aaa945db60b7753331c83a8c989/clients/src/main/java/org/apache/kafka/common/security/ssl/DefaultSslEngineFactory.java#L139
> 
> On 2025/07/08 17:01:07 Jun Rao wrote:
>> Hi, Jiunn-Yang,
>> 
>> I agree with Chia-Ping. If we allow cleanup.policy to be empty, we will
>> just continue to allow it in all future releases.
>> 
>> For ssl.cipher.suites, changing the default value from null to empty is
>> actually a breaking change. According to the doc, null means that all the
>> available cipher suites are supported. I am thinking that we should
>> continue to allow null as the default since it could represent a state
>> different from empty.
>> 
>> Also, it would be useful to add a compatibility column in the table. If a
>> value is formally disallowed, it would be useful to compare the old and the
>> new behavior (e.g. a different exception is thrown, etc).
>> 
>> Thanks,
>> 
>> Jun
>> 
>> On Tue, Jul 8, 2025 at 8:36 AM Chia-Ping Tsai <chia7...@gmail.com> wrote:
>> 
>>> hi Jiunn
>>> 
>>> 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.
>>> 
>>> 
>>> If we agree to support "empty list", the approach of "none" could be
>>> eliminated, right?
>>> 
>>> I don't understand the point of "5.0". Could you please share more details?
>>> It seems to me changing the type or default value should be fine in minor
>>> release if we don't break the existing property files.
>>> 
>>> `max.connections.per.ip.overrides` is parsed as "map" type, so using `LIST`
>>> instead of `String` does not seems to make sense.
>>> 
>>> Best,
>>> Chia-Ping
>>> 
>>> 
>>> 
>>> 
>>> 黃竣陽 <s7133...@gmail.com> 於 2025年7月8日 週二 下午11:25寫道:
>>> 
>>>> 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