Hi Ismael,

Got it. Your direction is perfectly reasonable. I am now updating the KIP
document and the implementation.

By allowing the buffer/block size to be configurable, it would be better to
update the title of the KIP like 'Allow fine-grained configuration for
compression'. Is that right?

@Other committers:

Is there any other opinion on allowing the buffer/block size to be
configurable?

Thanks,
Dongjin

On Thu, Nov 29, 2018 at 1:45 AM Ismael Juma <ism...@juma.me.uk> wrote:

> Hi Dongjin,
>
> To clarify, I mean a broker topic config with regards to point 1. As you
> know, compression can be done by the producer and/or by the broker. The
> default is for the broker to just use whatever compression was used by the
> producer, but this can be changed by the user on a per topic basis. It
> seems like it would make sense for the configs to be . consistent between
> producer and broker.
>
> For point 2, I haven't looked at the implementation, but we could do it in
> the `CompressionType` enum by invoking the right constructor or retrieving
> the default value via a constant (if defined). That's an implementation
> detail and can be discussed in the PR. The more general point is to rely on
> the library defaults instead of choosing one ourselves.
>
> For point 3, I'm in favour of doing that in this KIP.
>
> Ismael
>
> On Wed, Nov 28, 2018 at 7:01 AM Dongjin Lee <dong...@apache.org> wrote:
>
> > Thank you Ismael, here are the answers:
> >
> > *1. About topic config*
> >
> > After some consideration, I concluded that topic config doesn't need to
> > support compression.level. Here is why: since the compression is
> conducted
> > by the client, the one who can select the best compression level is the
> > client itself. Let us assume that the compression level is set at the
> topic
> > config level. In that case, there is a possibility that the compression
> > level is not optimal for some producers. Actually, Kafka's go client also
> > supports compression level functionality for the producer config only.
> > <https://github.com/Shopify/sarama/blob/master/config.go> (wait, do we
> > need
> > to add this reasoning in the KIP, rejected alternatives section?)
> >
> > *2. About default level*
> >
> > As of current draft implementation, the default compression is set on the
> > CompressionType enum. Of course, changing this strategy into relying on a
> > method from the library to pick the default compression level seems
> > possible, like `GZIPBlockOutputStream` does. In this case, we need to add
> > similar wrapper class for zstd and modify lz4 the wrapper also. Add to
> > this, it seems like we need to explicitly state that we follow the
> default
> > compression level of the codec in the documentation. Is this what you
> > intended?
> >
> > *3. Whether to allow the buffer/block size to be configurable*
> >
> > Well, As of current draft implementation, the lz4 level is implemented as
> > block size; this is caused by my misunderstanding on lz4. After reviewing
> > lz4 today, I found that it also supports compression level of 1~16
> > (default: 1), not block size. I will fix it in this weekend by updating
> the
> > wrapper class.
> >
> > For the problem of the buffer/block size, I have no strong opinion. If
> the
> > community needs it, I will do it all together. How do you think?
> >
> > In short, it seems like I need to update the KIP document for issue #1
> and
> > update the compression wrapper for issue #2, #3. Is this okay?
> >
> > Thanks,
> > Dongjin
> >
> > On Wed, Nov 28, 2018 at 12:34 AM Ismael Juma <isma...@gmail.com> wrote:
> >
> > >  Thanks for the KIP, this is helpful. A few questions:
> > >
> > > 1. Have we considered whether we want to allow a similar topic config?
> > > 2. Can we rely on a method from the library to pick the default
> > compression
> > > level if compression.level is not set? We do it for gzip and it would
> > seem
> > > reasonable to do something similar for the other compression libraries.
> > > 3. Do we want to allow the buffer/block size to be configurable? This
> has
> > > an impact on memory usage and people may want to trade compression for
> > > less/more memory in some cases. For example, the default for LZ4 is
> 64KB
> > > which is a bit high.
> > >
> > > Ismael
> > >
> > > On Sun, Nov 18, 2018, 2:07 PM Dongjin Lee <dong...@apache.org wrote:
> > >
> > > > Hello dev,
> > > >
> > > > I hope to initiate the discussion of KIP-390: Add producer option to
> > > adjust
> > > > compression level
> > > > <
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-390%3A+Add+producer+option+to+adjust+compression+level
> > > > >.
> > > > All feedbacks will be highly appreciated.
> > > >
> > > > Best,
> > > > Dongjin
> > > >
> > > > --
> > > > *Dongjin Lee*
> > > >
> > > > *A hitchhiker in the mathematical world.*
> > > >
> > > > *github:  <http://goog_969573159/>github.com/dongjinleekr
> > > > <http://github.com/dongjinleekr>linkedin:
> > > kr.linkedin.com/in/dongjinleekr
> > > > <http://kr.linkedin.com/in/dongjinleekr>slideshare:
> > > > www.slideshare.net/dongjinleekr
> > > > <http://www.slideshare.net/dongjinleekr>*
> > > >
> > >
> >
> >
> > --
> > *Dongjin Lee*
> >
> > *A hitchhiker in the mathematical world.*
> > *github:  <http://goog_969573159/>github.com/dongjinleekr
> > <https://github.com/dongjinleekr>linkedin:
> kr.linkedin.com/in/dongjinleekr
> > <https://kr.linkedin.com/in/dongjinleekr>speakerdeck:
> > speakerdeck.com/dongjin
> > <https://speakerdeck.com/dongjin>*
> >
>


-- 
*Dongjin Lee*

*A hitchhiker in the mathematical world.*
*github:  <http://goog_969573159/>github.com/dongjinleekr
<https://github.com/dongjinleekr>linkedin: kr.linkedin.com/in/dongjinleekr
<https://kr.linkedin.com/in/dongjinleekr>speakerdeck: speakerdeck.com/dongjin
<https://speakerdeck.com/dongjin>*

Reply via email to