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