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