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 >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >