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 2019/05/04 00:00:23 UTC

[kafka] branch 2.2 updated: KAFKA-8323: Close RocksDBStore's BloomFilter (#6672)

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

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


The following commit(s) were added to refs/heads/2.2 by this push:
     new 40ee415  KAFKA-8323: Close RocksDBStore's BloomFilter (#6672)
40ee415 is described below

commit 40ee41518dc782401867f2934502176bf013b497
Author: A. Sophie Blee-Goldman <so...@confluent.io>
AuthorDate: Fri May 3 16:50:18 2019 -0700

    KAFKA-8323: Close RocksDBStore's BloomFilter (#6672)
    
    Any RocksJava object that inherits from org.rocksdb.AbstractNativeReference must be closed explicitly in order to free up the memory of the backing C++ object. The BloomFilter extends RocksObject (which implements AbstractNativeReference) and should be also be closed in RocksDBStore#close to avoid leaking memory.
    
    Reviewers: Bill Bejeck <bb...@gmail.com>
---
 .../java/org/apache/kafka/streams/state/internals/RocksDBStore.java | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBStore.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBStore.java
index 2ca3ad3..109b8c3 100644
--- a/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBStore.java
+++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBStore.java
@@ -90,6 +90,7 @@ public class RocksDBStore implements KeyValueStore<Bytes, byte[]> {
     private RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapter userSpecifiedOptions;
     WriteOptions wOptions;
     FlushOptions fOptions;
+    private BloomFilter filter;
 
     private volatile boolean prepareForBulkload = false;
     ProcessorContext internalProcessorContext;
@@ -120,7 +121,9 @@ public class RocksDBStore implements KeyValueStore<Bytes, byte[]> {
         final BlockBasedTableConfig tableConfig = new BlockBasedTableConfig();
         tableConfig.setBlockCacheSize(BLOCK_CACHE_SIZE);
         tableConfig.setBlockSize(BLOCK_SIZE);
-        tableConfig.setFilter(new BloomFilter());
+        
+        filter = new BloomFilter();
+        tableConfig.setFilter(filter);
 
         userSpecifiedOptions.optimizeFiltersForHits();
         userSpecifiedOptions.setTableFormatConfig(tableConfig);
@@ -376,6 +379,7 @@ public class RocksDBStore implements KeyValueStore<Bytes, byte[]> {
         wOptions.close();
         fOptions.close();
         db.close();
+        filter.close();
 
         dbAccessor = null;
         userSpecifiedOptions = null;