Thanks all, for your comments! I'm on board with the consensus, so it sounds like your KIP is fine as-is, Maarten. Would you like to start the vote thread?
(just look at the mailing list for other examples) Thanks, -John On Sat, Apr 13, 2019 at 5:26 PM Matthias J. Sax <matth...@confluent.io> wrote: > > Are you sure the users are aware that with `withLoggingDisabled()`, they > > might lose data during failover? > > I hope so :D > > Of course, we can always improve the JavaDocs. > > > -Matthias > > > On 4/12/19 2:48 PM, Bill Bejeck wrote: > > Thanks for the KIP Maarten. > > > > I also agree that keeping the `withLoggingDisabled()` and > > `withLoggingEnabled(Map)` methods is the better option. > > > > When it comes to educating the users on the downside of disabling > logging, > > IMHO I think a comment in the JavaDoc should be sufficient. > > > > -Bill > > > > On Fri, Apr 12, 2019 at 3:59 PM Bruno Cadonna <br...@confluent.io> > wrote: > > > >> Matthias, > >> > >> Are you sure the users are aware that with `withLoggingDisabled()`, they > >> might lose data during failover? > >> > >> OK, we maybe do not necessarily need a WARN log. However, I would at > least > >> add a comment like in `StoreBuilder`,ie, > >> > >> /** > >> * Disable the changelog for store built by this {@link StoreBuilder}. > >> * This will turn off fault-tolerance for your store. > >> * By default the changelog is enabled. > >> * @return this > >> */ > >> StoreBuilder<T> withLoggingDisabled(); > >> > >> What do you think? > >> > >> Best, > >> Bruno > >> > >> On Thu, Apr 11, 2019 at 12:04 AM Matthias J. Sax <matth...@confluent.io > > > >> wrote: > >> > >>> I think that the current proposal to add `withLoggingDisabled()` and > >>> `withLoggingEnabled(Map)` should be the best option. > >>> > >>> IMHO there is no reason to add a WARN log. We also don't have a WARN > log > >>> when people disable logging on regular stores. As Bruno mentioned, this > >>> might also lead to data loss, so I don't see why we should treat > >>> suppress() different to other stores. > >>> > >>> > >>> -Matthias > >>> > >>> On 4/10/19 3:36 PM, Bruno Cadonna wrote: > >>>> Hi Marteen and John, > >>>> > >>>> I would opt for option 1 with an additional log message on INFO or > WARN > >>>> level, since the log file is the place where you would look first to > >>>> understand what went wrong. I would also not adjust it when > persistence > >>>> stores are available for suppress. > >>>> > >>>> I would not go for option 2 or 3, because IIUC, with > >>>> `withLoggingDisabled()` also persistent state stores do not guarantee > >> not > >>>> to loose records. Persisting state stores is basically a way to > >> optimize > >>>> recovery in certain cases. The changelog topic is the component that > >>>> guarantees no data loss. So regarding data loss, in my opinion, > >> disabling > >>>> logging on the suppression buffer is not different from disabling > >> logging > >>>> on other state stores. Please correct me if I am wrong. > >>>> > >>>> Best, > >>>> Bruno > >>>> > >>>> On Wed, Apr 10, 2019 at 12:12 PM John Roesler <j...@confluent.io> > >> wrote: > >>>> > >>>>> Thanks for the update and comments, Maarten. It would be interesting > >> to > >>>>> hear what others think as well. > >>>>> -John > >>>>> > >>>>> On Thu, Apr 4, 2019 at 2:43 PM Maarten Duijn <maartendu...@msn.com> > >>> wrote: > >>>>> > >>>>>> Thank you for the explanation regarding the internals, I have edited > >>> the > >>>>>> KIP accordingly and updated the Javadoc. About the possible data > loss > >>>>> when > >>>>>> altering changelog config, I think we can improve by doing (one of) > >> the > >>>>>> following. > >>>>>> > >>>>>> 1) Add a warning in the comments that clearly states what might > >> happen > >>>>>> when change logging is disabled and adjust it when persistent stores > >>> are > >>>>>> added. > >>>>>> > >>>>>> 2) Change `withLoggingDisabled` to `minimizeLogging`. Instead of > >>>>> disabling > >>>>>> logging, a call to this method minimizes the topic size by > >> aggressively > >>>>>> removing the records emitted downstream by the suppress operator. I > >>>>> believe > >>>>>> this can be achieved by setting `delete.retention.ms=0` in the > topic > >>>>>> config. > >>>>>> > >>>>>> 3) Remove `withLoggingDisabled` from the proposal. > >>>>>> > >>>>>> 4) Leave both methods as-proposed, as you indicated, this is in line > >>> with > >>>>>> the other parts of the Streams API > >>>>>> > >>>>>> A user might want to disable logging when downstream is not a Kafka > >>> topic > >>>>>> but some other service that does not benefit from > >> atleast-once-delivery > >>>>> of > >>>>>> the suppressed records in case of failover or rebalance. > >>>>>> Seeing as it might cause data loss, the methods should not be used > >>>>> lightly > >>>>>> and I think some comments are warranted. Personally, I rely purely > on > >>>>> Kafka > >>>>>> to prevent data loss even when a store persisted locally, so when > >>> support > >>>>>> is added for persistent suppression, I feel the comments may stay. > >>>>>> > >>>>>> Maarten > >>>>>> > >>>>> > >>>> > >>> > >>> > >> > > > >