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