You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kafka.apache.org by bb...@apache.org on 2026/06/15 13:54:13 UTC

(kafka) branch trunk updated: KAFKA-20688: Fix RocksDB memory leak (#22557)

This is an automated email from the ASF dual-hosted git repository.

bbejeck pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/kafka.git


The following commit(s) were added to refs/heads/trunk by this push:
     new a31d93c4c2d KAFKA-20688: Fix RocksDB memory leak (#22557)
a31d93c4c2d is described below

commit a31d93c4c2dc322272181c383d3cb76fc973625c
Author: Matthias J. Sax <ma...@confluent.io>
AuthorDate: Mon Jun 15 06:53:59 2026 -0700

    KAFKA-20688: Fix RocksDB memory leak (#22557)
    
    openRocksDB() passed a `new ColumnFamilyOptions()` into a throwaway Options
    used only for listColumnFamilies; the try-with-resources closes the Options
    wrapper but not that ColumnFamilyOptions, leaking a native handle on every
    store open. Reuse the existing columnFamilyOptions parameter (already closed                                                                                                                                via RocksDBStore)
    
    Reviewers: Nilesh Kumar, Uladzislau Blok <bl...@gmail.com>, Bill
    Bejeck <bb...@apache.org>
---
 .../streams/state/internals/RocksDBTimestampedStoreWithHeaders.java     | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimestampedStoreWithHeaders.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimestampedStoreWithHeaders.java
index 9a53c35290a..8f96b182916 100644
--- a/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimestampedStoreWithHeaders.java
+++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimestampedStoreWithHeaders.java
@@ -73,7 +73,7 @@ public class RocksDBTimestampedStoreWithHeaders extends RocksDBStore implements
                      final ColumnFamilyOptions columnFamilyOptions) {
         // Check if we're upgrading from RocksDBTimestampedStore or from plain RocksDBStore
         final List<byte[]> existingCFs;
-        try (final Options options = new Options(dbOptions, new ColumnFamilyOptions())) {
+        try (final Options options = new Options(dbOptions, columnFamilyOptions)) {
             existingCFs = RocksDB.listColumnFamilies(options, dbDir.getAbsolutePath());
         } catch (final RocksDBException e) {
             throw new ProcessorStateException("Error listing column families for store " + name, e);