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

there is a small "sugar" in the controller, which we will
create listener.security.protocol.map based on controller.listener.names
if listener.security.protocol.map is not explicitly set [0]
Additionally, `controller.listener.names` is also used to filter out the
advertised controller listeners [1]


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

I don't think so. There is no null check after calling
`getList(GroupCoordinatorConfig.GROUP_COORDINATOR_REBALANCE_PROTOCOLS_CONFIG)`[2],
which causes an NPE if getList returns null."

[0]
https://github.com/apache/kafka/blob/trunk/server/src/main/java/org/apache/kafka/server/config/AbstractKafkaConfig.java#L133
[1]
https://github.com/apache/kafka/blob/7ea32a0e938c22119f11908aa419aaf0ffd9b6d8/core/src/main/scala/kafka/server/KafkaConfig.scala#L459
[2]
https://github.com/apache/kafka/blob/7ea32a0e938c22119f11908aa419aaf0ffd9b6d8/core/src/main/scala/kafka/server/KafkaConfig.scala#L373

Jun Rao <j...@confluent.io.invalid> 於 2025年7月15日 週二 上午6:20寫道:

> 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