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