At this point, I think the overall discussion on the new config is completed and I'll start a voting thread.
Thanks, Bill On Tue, May 15, 2018 at 4:37 PM, Bill Bejeck <bbej...@gmail.com> wrote: > Thanks for the comments, John. I've updated the config name on the KIP.. > > -Bill > > > On Tue, May 15, 2018 at 2:22 PM, John Roesler <j...@confluent.io> wrote: > >> Hi Bill, >> >> Thanks for the KIP. Now that we're using strings describing the "set of >> optimizations", such as "none" and "all", should we change the config name >> to just "topology.optimizations"? >> >> The "enable." feels like a holdover from the boolean-valued config. >> >> Thanks, >> -John >> >> On Tue, May 8, 2018 at 9:13 PM, Bill Bejeck <bbej...@gmail.com> wrote: >> >> > Thanks, Guozhang and Matthias for the comments. >> > >> > I was thinking of changing the config type back to a String and >> enforcing >> > the values to be "true" or "false", but "none" or "all" is just as good. >> > >> > Since those values seem to work, I'll update the KIP accordingly. >> > >> > Thanks, >> > Bill >> > >> > On Tue, May 8, 2018 at 9:38 PM, Matthias J. Sax <matth...@confluent.io> >> > wrote: >> > >> > > Sounds good to me. >> > > >> > > On 5/8/18 5:47 PM, Guozhang Wang wrote: >> > > > Thanks Matthias. >> > > > >> > > > I was also thinking about whether in the future we'd want to enable >> > > > optimizations at different levels that may or may not impact >> > > compatibility. >> > > > That's why I asked if we have thought about "allowing part of the >> > > > optimizations in the future". >> > > > >> > > > With that in mind, I'd change my preference and take string typed >> > config. >> > > > Even if we ended up with no finer grained optimizations in the >> future >> > we >> > > > can still have the string typed parameter with only two allowed >> values, >> > > > like what we did for EOS. But I think in 2.0 allowing any not-null >> > string >> > > > values as enabled is still a bit odd, so how about we make two >> string >> > > > values, like `none` (default value) and `all`? >> > > > >> > > > >> > > > Guozhang >> > > > >> > > > >> > > > On Tue, May 8, 2018 at 3:35 PM, Matthias J. Sax < >> matth...@confluent.io >> > > >> > > > wrote: >> > > > >> > > >> One thought I want to bring up about switching optimization on/off: >> > > >> >> > > >> While for the initial release, a boolean flag seems to be >> sufficient, >> > I >> > > >> could imagine that we apply different and potentially >> > > >> upgrade-incompatible optimizations in future releases. Thus, to me >> it >> > > >> would make sense to use a String type, to indicate what >> optimizations >> > > >> are possible based on the release. For example, in next release we >> > > >> accept `null` for disabled and "2.0". If there are any incompatible >> > > >> changes, people can stay with "2.0" optimizations level when >> upgrading >> > > >> to "2.1" while new applications can use "2.1" optimization level. >> Old >> > > >> applications would need to do an offline upgrade to get "2.1" >> > > >> optimizations. >> > > >> >> > > >> I agree with Bill, that switching individual optimizations on/off >> is >> > too >> > > >> fine grained and hard to maintain. However, for compatibility, it >> > might >> > > >> make sense, to have certain "levels of optimizations" (based on the >> > > >> release) that allow users to stay with on an older level for >> upgrade >> > > >> purpose. Using the release numbers to encode those "levels" is >> easy to >> > > >> understand for users and should minimize the mental effort to get >> the >> > > >> config right. >> > > >> >> > > >> Let me know what you think about this. >> > > >> >> > > >> >> > > >> -Matthias >> > > >> >> > > >> On 5/8/18 3:08 PM, Ted Yu wrote: >> > > >>> Bill:That makes sense. >> > > >>> Using boolean should suffice. >> > > >>> -------- Original message --------From: Bill Bejeck < >> > bbej...@gmail.com >> > > > >> > > >> Date: 5/8/18 2:48 PM (GMT-08:00) To: dev@kafka.apache.org >> Subject: >> > > Re: >> > > >> [DISCUSS] KIP-295: Add Streams Configuration Allowing for Optional >> > > Topology >> > > >> Optimization >> > > >>> Thanks for the comments Guozhang and Ted. >> > > >>> >> > > >>> Guozhang: >> > > >>> >> > > >>> 1) I'll update the KIP in the "Compatibility, Deprecation and >> > > Migration >> > > >>> Plan" with the expected impact of turning on optimization. But at >> > this >> > > >>> point, I have not identified a migration plan that doesn't involve >> > > having >> > > >>> to stop all instances and restart. >> > > >>> >> > > >>> 2) Setting the type to String was just so we could have the >> default >> > > of >> > > >>> null, indicating run no optimizations. As for partially enabling >> > > >>> optimizations, I'm not sure I had that in mind, at least at this >> > point. >> > > >>> To me having the topology optimized should be an "all or nothing" >> > > >>> proposition. For now, I'll change the type to boolean (with a >> > default >> > > >>> value of false) to better reflect the intent of the configuration. >> > > >>> >> > > >>> Ted, thanks again for the comments. >> > > >>> >> > > >>> The intent of the new configuration, as I mentioned above, is >> whether >> > > to >> > > >>> turn optimization on or off in aggregate. The main reason for >> having >> > > the >> > > >>> configuration is for backward compatibility. As optimization may >> > > result >> > > >> in >> > > >>> a slightly different topology from the original one, we need to >> allow >> > > >> users >> > > >>> to turn it off until they are ready for migrating to the new >> > topology. >> > > >>> >> > > >>> I don't think having to select each optimization is a feasible >> > > >> solution. I >> > > >>> say this for few reasons: >> > > >>> >> > > >>> 1. Maintenance will be an issue. While the initial target is >> > only a >> > > >>> small number of optimizations, but as the number grows, having >> to >> > > >> maintain >> > > >>> the number of options in the code will difficult at best. >> > > >>> 2. Users probably don't want to reason about which combination >> of >> > > >>> optimizations to have. Thinking about which optimizations to >> turn >> > > on >> > > >> or >> > > >>> off raises the complexity of deploying an application. >> > > >>> 3. When using a relational database or other another framework >> > that >> > > >> may >> > > >>> optimize queries, as far as I know, it's not a choice of which >> > > >>> optimizations to have, they are performed automatically. >> > > >>> >> > > >>> Does this make sense? >> > > >>> >> > > >>> >> > > >>> On Mon, May 7, 2018 at 7:49 PM, Ted Yu <yuzhih...@gmail.com> >> wrote: >> > > >>> >> > > >>>> There are 4 subtasks for KAFKA-6034 >> > > >>>> >> > > >>>> If each optimization can be switched on/off, there should be 4 >> enums >> > > for >> > > >>>> the switch. >> > > >>>> >> > > >>>> On Mon, May 7, 2018 at 4:39 PM, Guozhang Wang < >> wangg...@gmail.com> >> > > >> wrote: >> > > >>>> >> > > >>>>> Hello Bill, >> > > >>>>> >> > > >>>>> Thanks for the KIP. My comments are the following: >> > > >>>>> >> > > >>>>> 1) We should state clearly what are the expected impact in >> > > >>>> "Compatibility, >> > > >>>>> Deprecation, and Migration Plan" when optimization is turned on. >> > > >>>>> >> > > >>>>> 2) I'm wondering why we define this config as a String typed, >> > rather >> > > >> than >> > > >>>>> boolean typed? Or are you expecting to extend it to allow >> partially >> > > >>>>> enabling part of the optimizations in the future? >> > > >>>>> >> > > >>>>> >> > > >>>>> Hi Ted, >> > > >>>>> >> > > >>>>> The cover JIRA for topology optimization can be found here: >> > > >>>>> https://issues.apache.org/jira/browse/KAFKA-6034 >> > > >>>>> >> > > >>>>> >> > > >>>>> Guozhang >> > > >>>>> >> > > >>>>> >> > > >>>>> On Mon, May 7, 2018 at 11:04 AM, Ted Yu <yuzhih...@gmail.com> >> > wrote: >> > > >>>>> >> > > >>>>>> Which JIRA is for the Topology Optimization itself ? >> > > >>>>>> >> > > >>>>>> Thanks >> > > >>>>>> >> > > >>>>>> On Mon, May 7, 2018 at 10:26 AM, Bill Bejeck < >> bbej...@gmail.com> >> > > >>>> wrote: >> > > >>>>>> >> > > >>>>>>> All, >> > > >>>>>>> I'd like to start a discussion about adding a configuration >> > > parameter >> > > >>>>>>> allowing for the forthcoming topology optimization to be >> optional >> > > via >> > > >>>>>>> configuration. >> > > >>>>>>> >> > > >>>>>>> >> > > >>>>>>> The KIP can be found here: >> > > >>>>>>> https://cwiki.apache.org/confluence/display/KAFKA/KIP- >> > > >>>>>> 295%3A+Add+Streams+ >> > > >>>>>>> Configuration+Allowing+for+Optional+Topology+Optimization >> > > >>>>>>> >> > > >>>>>>> Thanks, >> > > >>>>>>> Bill >> > > >>>>>>> >> > > >>>>>> >> > > >>>>> >> > > >>>>> >> > > >>>>> >> > > >>>>> -- >> > > >>>>> -- Guozhang >> > > >>>>> >> > > >>>> >> > > >> >> > > >> >> > > > >> > > > >> > > >> > > >> > >> > >