Hi, The prevailing interpretation of the KIP voting process is to start a dedicated VOTE email thread for voting.
See: https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=50859233#KafkaImprovementProposals-Process Thanks, Kirk On Thu, Jun 26, 2025, at 3:59 PM, Denloye, Olasoji wrote: > Hello all, please vote for KIP-1121. > > This KIP introduces a simple framework that enables the use of alternative, > faster implementations of the existing compression codecs (Gzip, Snappy, > Zstandard and LZ4) in Kafka. > > https://cwiki.apache.org/confluence/x/Xgr0Ew > > Thanks > > -----Original Message----- > From: Denloye, Olasoji <olasoji.denl...@intel.com> > Sent: Friday, June 13, 2025 8:40 AM > To: dev@kafka.apache.org > Subject: RE: [VOTE] KIP-1121: Compression acceleration in Kafka > > Hello, I would like to call a vote for KIP-1121. This KIP introduces a simple > framework that enables the use of alternative, faster implementations of the > existing compression codecs (Gzip, Snappy, Zstandard and LZ4) in Kafka. > > https://cwiki.apache.org/confluence/x/Xgr0Ew > > Thanks > > -----Original Message----- > From: Denloye, Olasoji <olasoji.denl...@intel.com> > Sent: Wednesday, June 11, 2025 11:31 AM > To: dev@kafka.apache.org > Subject: RE: [VOTE] KIP-1121: Compression acceleration in Kafka > > Hello all, I would like to call a vote for KIP-1121. This KIP introduces a > simple framework that enables the use of alternative, faster implementations > of the existing compression codecs (Gzip, Snappy, Zstandard and LZ4) in Kafka. > > https://cwiki.apache.org/confluence/x/Xgr0Ew > > Thanks > > > -----Original Message----- > From: Denloye, Olasoji <olasoji.denl...@intel.com> > Sent: Wednesday, June 4, 2025 9:00 AM > To: dev@kafka.apache.org > Subject: RE: [DISCUSS] KIP-1121: Compression acceleration in Kafka > > Hello all, > > Regarding Compression acceleration, I would like to call a vote soon so if > anyone wants to contribute to the discussion or bring up other concerns, you > are welcome to comment. > > Thanks, > Olasoji > > -----Original Message----- > From: Denloye, Olasoji <olasoji.denl...@intel.com> > Sent: Thursday, May 29, 2025 10:39 PM > To: dev@kafka.apache.org > Subject: RE: [DISCUSS] KIP-1121: Compression acceleration in Kafka > > Hello all, any more comments? > > Thanks > > -----Original Message----- > From: Denloye, Olasoji <olasoji.denl...@intel.com> > Sent: Wednesday, May 7, 2025 10:55 AM > To: dev@kafka.apache.org > Subject: RE: [DISCUSS] KIP-1121: Compression acceleration in Kafka > > Hi Greg, > > 2, 10 I figured a way to not expose any of these internal classes to the > public API. I added a new interface in the place of BufferSupplier. > 7. No, CompressionService#isAvailable returning false does not currently > cause a ConfigException, it would cause a fall-back to the base > implementation. I have changed this to checkAvailable which throws an > exception if not available. If a more appropriate exception does not already > exist, we could introduce "UnavailableServiceException" > 9. I have updated the testing section to include additional scenarios > relating to Kafka side testing. In short, we need to ensure the default > behavior is unchanged and validate all new functions and configurations. > 11. the "accelerated GzipCompressor" mentioned is a reference design and need > not be a part of Kafka. Is there a recommendation for hosting/distributing > implementations of CompressionService? > 12. Similar to the base implementation the goal is to have a separate > instance of CompressionService for each I/O threads handling > compression/decompression. > 13. The existing implementations will remain unchanged. If the > CompressionService configuration is empty then the base implementation would > be used. > 14. The broker configuration is currently in ServerConfigs.java and is > configured statically in broker.properties (or server.properties). I have not > considered dynamic configuration via kraft. > > Thanks, > Olasoji > > -----Original Message----- > From: Greg Harris <greg.har...@aiven.io.INVALID> > Sent: Wednesday, April 30, 2025 1:04 PM > To: dev@kafka.apache.org > Subject: Re: [DISCUSS] KIP-1121: Compression acceleration in Kafka > > Hi Olasoji, > > Thanks for updating the KIP. > > 2. I'm still not satisfied with the description of the public API in the KIP. > It mentions these classes: > * org.apache.kafka.common.utils.ByteBufferOutputStream > * org.apache.kafka.common.utils.ByteBufferInputStream > * org.apache.kafka.common.utils.BufferSupplier > * org.apache.kafka.common.record.CompressionType > But not any description of these classes. Please include signatures of all > new methods/variables/etc that are being exposed. > > 7. Does CompressionService#isAvailable returning false cause a > ConfigException? Could the CompressionService provide a reason (via an > exception) of why it isn't available, instead of returning a boolean and > requiring users to look through logs to debug the unavailability? > 8. Thanks for clarifying the security model. This is just like any other Java > application, where you need to trust the JARs that you add to your > application. I don't think that the isolated classloader needs to be > mentioned in the KIP, so thank you for removing that. > 9. This point does not appear to have been addressed. > 10. The classes mentioned above are in existing packages that are not exposed > via Javadoc, and we have generally included whole packages in the API at > once. I think these classes need to be moved to a different package, or > removed from the API surface area. > 11. The KIP states that it "also introduces an accelerated GzipCompressor". > Does this require Apache Kafka to depend on a specific accelerator > implementation? The Apache Kafka project has traditionally been very averse > to adding dependencies like this. > 12. What sort of concurrency guarantees are expected from CompressionService > implementations? Should each connection, thread, or JVM get its own instance > of each CompressionService? > 13. Will the existing implementations be converted to CompressionService > classes, or will they be special fallbacks? Will the default for the > configuration be "null" or some real class? > 14. It looks like the new configurations are being added to the > CommonClientConfigs to be included in both producer and consumer. Where is > this configuration on the broker side? Is it a dynamic config (able to be > reconfigured via KRaft) or a static config (only configurable by > server.properties)? > > Thanks, > Greg > > On Wed, Apr 30, 2025 at 10:2 AM Denloye, Olasoji <olasoji.denl...@intel.com> > wrote: > > > Hello all, > > > > I would like to call a vote soon so if anyone wants to contribute to > > the discussion or bring up other concerns, you are welcome to comment. > > > > Thanks, > > Olasoji > > > > -----Original Message----- > > From: Denloye, Olasoji <olasoji.denl...@intel.com> > > Sent: Wednesday, April 23, 2025 10:22 AM > > To: dev@kafka.apache.org > > Subject: RE: [DISCUSS] KIP-1121: Compression acceleration in Kafka > > > > Hi All, > > > > This is a gentle reminder about open discussion on this compression > > acceleration KIP. I would love to hear your thoughts. > > > > Thanks, > > Olasoji > > > > -----Original Message----- > > From: Denloye, Olasoji <olasoji.denl...@intel.com> > > Sent: Monday, April 7, 2025 8:49 AM > > To: dev@kafka.apache.org > > Subject: RE: [DISCUSS] KIP-1121: Compression acceleration in Kafka > > > > Hi Greg, > > > > I have refactored the proposal to reduce the API surface area. I > > introduced a new CompressionService interface which contains basic > > compression/decompression functions. A service provider, when > > supplied, would be wrapped in a concrete 'Compression' and run similar > > to the existing compression codecs. The 'Compression' interface and > > its subclasses have been decoupled from these changes. > > > > 6. based on your feedback, offloading would occur if and only if the > > specific configuration is set, even if multiple service providers are > > available 8. The threat model is that dynamically loading any > > untrusted or untested jar on the classpath can be dangerous. The > > purpose of bringing this up is to discuss how service provider > > (plugins) is distributed and installed. On one hand, a centralized > > Kafka repository and on the other a decentralized approach where > > plugins are developed and installed on the fly. Which is preferable? > > The choice would determine what security mitigations are needed if any. > > > > https://cwiki.apache.org/confluence/x/Xgr0Ew > > Thanks, > > Olasoji > > > > -----Original Message----- > > From: Greg Harris <greg.har...@aiven.io.INVALID> > > Sent: Monday, February 24, 2025 12:42 PM > > To: dev@kafka.apache.org > > Subject: Re: [DISCUSS] KIP-1121: Compression acceleration in Kafka > > > > Hi Olasoji, > > > > Thanks for the update. > > > > 1. Could you add these as code examples to the KIP, and not as prose? > > See [1-3] for some examples of well-written public interfaces. > > > > 2. I find the proposed API surface area excessive, and think we need > > to narrow it down. Looking at what's merged on trunk right now and not > > including your proposed modifications, this KIP includes: > > * 2 interfaces > > * 12 classes > > * 5 constructors > > * 8 static methods > > * 2 static variables > > * 18 unique instance methods > > Committing to long-term stability of this many classes and interfaces > > as public API will make it hard to initially review it, and innovate > > on it in the future. > > > > 4. Is there a way to modify the existing signatures/implementations > > such that we don't have to expose any subclasses of Compression as > > public API, only the CompressionTypes? > > 6. What does "first provider loaded" mean to users? AFAIU, this looks > > arbitrary to users, as it depends on classpath ordering, filesystem > > ordering, etc. > > 8. I'm trying to understand under what conditions this can be attacked > > (threat model), and what mitigations Kafka needs to provide > > (implementation). Is Kafka providing special filtering? Is Kafka > > providing the custom class loader? > > 6, 7, 8. Please add these details to the KIP so that other reviewers > > don't need to follow the discussion thread so closely. > > 9. The testing section looks like it is written for individuals > > implementing accelerator plugins. Could you also write about how the > > Kafka side of the implementation will be tested? > > > > Thanks, > > Greg > > > > [1] > > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-98+-+Exactly+Onc > > e+Delivery+and+Transactional+Messaging > > [2] > > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tie > > red+Storage > > [3] > > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-877%3A+Mechanism > > +for+plugins+and+connectors+to+register+metrics > > > > On Fri, Feb 21, 2025 at 12:15 AM Denloye, Olasoji < > > olasoji.denl...@intel.com> > > wrote: > > > > > Hi Greg, Thanks for your response. > > > > > > 1. Some changes will be made to the Compression and Builder > > > interfaces. At least one default method, isAvailable(), would be > > > added to the Builder interface. The static methods in the > > > Compression interface that create and return specific builders would > > > be modified to return a new builder or a loaded builder from a > > > service provider if it exists. The return types may need to be more > > > generic e.g Builder<GzipCompression> vs GzipCompression.Builder. > > > 2. These classes are appropriate to add to the API surface as they > > > may be required to develop efficient compression implementations. I > > > will modify the KIP. > > > 4. This is because the Compression interface (currently) expects a > > > Builder of type 'GzipCompression.Builder'. I agree that alternative > > > implementations need not extend the base implementation with some > > > modifications to the Compression interface. However if an > > > alternative implementation is registered as a service provider of > > > GzipCompression then it must be of type 'CompressionType.GZIP' and > > > it must be fully compatible with the base implementation of > > > GzipCompression. > > > 5. So far no, but 'Configurable' looks promising 6. If no specific > > > configuration is set, then the first provider loaded and available > > > will be used. If a specific configuration is set then that specific > > > provider will be used if available else the base implementation. > > > 7. Yes, a ConfigException will be thrown if the class specified in > > > the config is not found on the classpath. > > > 8. This can be implemented by using special filtering or a custom > > > class loader. The concern here is that any class on the class path > > > (trusted or > > > not) could be loaded which could intercept messages or corrupt > > > messages by compressing using an unknown algorithm. > > > > > > -----Original Message----- > > > From: Greg Harris <greg.har...@aiven.io.INVALID> > > > Sent: Tuesday, February 18, 2025 1:58 PM > > > To: dev@kafka.apache.org > > > Subject: Re: [DISCUSS] KIP-1121: Compression acceleration in Kafka > > > > > > Hi Olasoji, > > > > > > Thanks for the KIP! I find it addresses many of the concerns I had > > > with KIP-984. Thank you for following up on that! > > > > > > 1. Since the Compression interface is internal currently, it may > > > contain some components that were not designed with pluggability in > > > mind, such as the static methods. Are these interfaces being > > > published as-is, or are some changes going to be made first? > > > 2. Similarly, the ByteBufferOutputStream, CompressionType, > > > BufferSupplier, ByteBufferInputStream, ChunkedByteStream, and > > > GzipOutputStream classes in the signature or implementations of > > > Compression are not public API currently, and would need to be made > > > public along with Compression. Are these classes appropriate to add > > > to > > our API surface? > > > 3. Could you adjust the KIP structure/formatting to make the public > > > API surface area more clear? Some prose in "Proposed Changes" could > > > become code examples in "Public Interfaces". > > > 4. What is the significance of this statement: "Any new service > > > provider should extend the base implementation and thus return the > > > same CompressionType". Are we expecting that `o instanceof > > > GzipCompression == o.type().equals(CompressionType.GZIP)` at all > > > times? If an alternative implementation doesn't need any part of the > > > upstream implementation, does it make sense to force them to extend > > > one > > another? > > > 5. Is this interface expected to be composed with any other plugin > > > mix-ins, such as Configurable, Reconfigurable, Closeable, > > > Monitorable, Versioned, etc? > > > 6. If there are multiple accelerators present, which one will be chosen? > > > 7. If the configuration is set but the accelerator implementation > > > isn't available, does that cause a ConfigException? > > > 8. Could you expand on this statement: "Due to security and/or > > > compatibility concerns it is possible to limit this feature to only > > > load approved service providers (e.g those distributed with Kafka)". > > > How will this be implemented? What threat model does this assume? > > > > > > Thanks, > > > Greg > > > > > > On Tue, Feb 18, 2025 at 11:41 AM Denloye, Olasoji < > > > olasoji.denl...@intel.com> > > > wrote: > > > > > > > Hi, I would like to bring this back to everyone's attention. This > > > > KIP introduces a simple framework that enables the use of > > > > alternative, faster implementations of the existing compression > > > > codecs (Gzip, Snappy, Zstandard and LZ4) in Kafka. > > > > > > > > https://cwiki.apache.org/confluence/x/Xgr0Ew > > > > > > > > Thanks > > > > > > > > -----Original Message----- > > > > From: Denloye, Olasoji <olasoji.denl...@intel.com> > > > > Sent: Thursday, February 13, 2025 1:22 PM > > > > To: dev@kafka.apache.org > > > > Subject: RE: [DISCUSS] KIP-1121: Compression acceleration in Kafka > > > > > > > > Hi, I would like to bring this back to everyone's attention. I > > > > have made changes to the proposal to incorporate the ServiceLoader > > > > API as > > > suggested. > > > > > > > > https://cwiki.apache.org/confluence/x/Xgr0Ew > > > > > > > > Thanks > > > > > > > > -----Original Message----- > > > > From: Denloye, Olasoji > > > > Sent: Thursday, December 19, 2024 11:01 AM > > > > To: dev@kafka.apache.org > > > > Subject: RE: [DISCUSS] KIP-1121: Compression acceleration in Kafka > > > > > > > > Hi Frédérik, Thanks for the suggestion to use the existing > > > > ServiceLoader feature in Java. It could serve as suitable > > > > mechanism for selecting the best available compression codec. > > > > > > > > Thanks > > > > > > > > -----Original Message----- > > > > From: Frédérik Rouleau <froul...@confluent.io.INVALID> > > > > Sent: Wednesday, December 18, 2024 12:24 AM > > > > To: dev@kafka.apache.org > > > > Subject: Re: [DISCUSS] KIP-1121: Compression acceleration in Kafka > > > > > > > > Hi Olasoji, > > > > > > > > I think that having a way to provide some optimised/accelerated > > > > implementation is a good idea. > > > > What not using the ServiceLoader feature of Java? That would allow > > > > anyone to provide their own optimised implementation depending on > > > > their infrastructure. We can keep the existing implementation as > > > > the default and allow Kafka to find a better implementation based > > > > on Service found. As you mentioned, we might need to enrich the > > > > interface to allow Kafka to find the best version available at runtime. > > > > > > > > Regards, > > > > > > > > On Tue, Dec 17, 2024 at 6:36 PM Denloye, Olasoji < > > > > olasoji.denl...@intel.com> > > > > wrote: > > > > > > > > > Hi Everyone, > > > > > > > > > > I would like to start a discussion on KIP-1121: Compression > > > > > acceleration acceleration in Kafka. KIP-1121: Compression > > > > > acceleration in Kafka - Apache Kafka - Apache Software > > > > > Foundation< > > > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-1121%3A+Co > > > > > mp > > > > > re > > > > > ss > > > > > ion+acceleration+in+Kafka > > > > > > > > > > > > > > > > > > > > >