You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ma...@apache.org on 2016/03/02 14:24:10 UTC

[04/14] cassandra git commit: InvalidateKeys should have a weak ref to the key cache

InvalidateKeys should have a weak ref to the key cache

Patch by marcuse; reviewed by Ariel Weisberg for CASSANDRA-11176


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/0129f70c
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/0129f70c
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/0129f70c

Branch: refs/heads/cassandra-3.0
Commit: 0129f70c47d4a6b684fbf0df4dbbfb8ffc097d59
Parents: 7877d6f
Author: Marcus Eriksson <ma...@apache.org>
Authored: Thu Feb 25 08:57:35 2016 +0100
Committer: Marcus Eriksson <ma...@apache.org>
Committed: Wed Mar 2 14:18:44 2016 +0100

----------------------------------------------------------------------
 CHANGES.txt                                            |  1 +
 .../apache/cassandra/io/sstable/SSTableRewriter.java   | 13 +++++++++----
 2 files changed, 10 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/0129f70c/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 82ee99e..eed9035 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.14
+ * InvalidateKeys should have a weak ref to key cache (CASSANDRA-11176)
  * Don't remove FailureDetector history on removeEndpoint (CASSANDRA-10371)
  * Only notify if repair status changed (CASSANDRA-11172)
  * Add partition key to TombstoneOverwhelmingException error message (CASSANDRA-10888)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0129f70c/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java b/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java
index af5d1d3..b56a5dc 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java
@@ -17,6 +17,7 @@
  */
 package org.apache.cassandra.io.sstable;
 
+import java.lang.ref.WeakReference;
 import java.util.*;
 
 import com.google.common.annotations.VisibleForTesting;
@@ -339,12 +340,12 @@ public class SSTableRewriter
     private static final class InvalidateKeys implements Runnable
     {
         final List<KeyCacheKey> cacheKeys = new ArrayList<>();
-        final InstrumentingCache<KeyCacheKey, ?> cache;
+        final WeakReference<InstrumentingCache<KeyCacheKey, ?>> cacheRef;
 
         private InvalidateKeys(SSTableReader reader, Collection<DecoratedKey> invalidate)
         {
-            this.cache = reader.getKeyCache();
-            if (cache != null)
+            this.cacheRef = new WeakReference<InstrumentingCache<KeyCacheKey, ?>>(reader.getKeyCache());
+            if (cacheRef.get() != null)
             {
                 for (DecoratedKey key : invalidate)
                     cacheKeys.add(reader.getCacheKey(key));
@@ -354,7 +355,11 @@ public class SSTableRewriter
         public void run()
         {
             for (KeyCacheKey key : cacheKeys)
-                cache.remove(key);
+            {
+                InstrumentingCache<KeyCacheKey, ?> cache = cacheRef.get();
+                if (cache != null)
+                    cache.remove(key);
+            }
         }
     }