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

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to