Hi, Jiunn-Yang,

Thanks for the updated KIP.

JR20. controller.listener.names : It's required on the broker. Is it
required on the controller?

JR21. bootstrap.servers: Some of them (e.g. in producer/consumer) already
require it to be non-null.

JR22. group.coordinator.rebalance.protocols: Currently, it can be set to
null, right?

JR23. early.start.listeners: It allows default value of null, which means
that all listeners included in controller.listener.names will also be early
start listeners.

JR24. log.dirs: It currently has a default value of null.

JR25. It seems there are quite a few more configs of type list. Do they
need to be changed too?

AdminClientConfig: 4
ConsumerConfig: 5
ProducerConfig: 4
SaslConfigs: 1
SslConfigs: 2
BrokerSecurityConfigs: 5
MirrorClientConfig: 1
org.apache.kafka.connect.mirror : 16
org.apache.kafka.connect.runtime : 21
GroupCoordinatorConfig: 3
QuorumConfig: 2
ServerConfigs: 1
KRaftConfigs: 1
ClientMetricsConfigs: 2
MetricConfigs: 2
LogConfig: 4
StreamsConfig: 4

Jun

On Fri, Jul 11, 2025 at 8:13 PM 黃竣陽 <s7133...@gmail.com> wrote:

> Hi Chia, Jun
>
> Thanks for the reply,
> I have updated the table in the KIP.
>
> Best Regards,
> Jiunn-Yang
>
> > Chia-Ping Tsai <chia7...@gmail.com> 於 2025年7月11日 清晨7:38 寫道:
> >
> > Hi, Jun
> >
> > Thanks for the reply.
> >
> > I think the following configs could use null as the default value and
> treat
> > an "empty list" as an illegal value.
> >
> > `sasl.oauthbearer.expected.audience`, `ssl.cipher.suites`,
> > `ssl.enabled.protocols`,
> > and `log.dirs`
> >
> > Jun Rao <j...@confluent.io.invalid> 於 2025年7月11日 週五 上午6:59寫道:
> >
> >> Hi, Chia-Ping, Jiunn-Yang,
> >>
> >> Thanks for the reply.
> >>
> >> As you said, if ssl.cipher.suites is empty, intuitively this means that
> no
> >> cipher is allowed. So, this should be an illegal config. It just happens
> >> that our implementation treats it as if the config is not set (meaning
> the
> >> value is null). So, it seems that a more intuitive convention is: if the
> >> config is not set, it defaults to all available cipher suites. If it's
> >> explicitly set, it can't be empty.
> >>
> >> Jun
> >>
> >>
> >>
> >> On Wed, Jul 9, 2025 at 8:27 AM 黃竣陽 <s7133...@gmail.com> wrote:
> >>
> >>> 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