Don't read saved row cache when it's disabled

patch by xedin; reviewed by slebresne for CASSANDRA-3849


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

Branch: refs/heads/cassandra-1.1
Commit: 8eccb80a317082897dc04d033fce500ac43e70aa
Parents: e36b213
Author: Sylvain Lebresne <sylv...@riptano.com>
Authored: Mon Feb 6 10:33:42 2012 +0100
Committer: Sylvain Lebresne <sylv...@riptano.com>
Committed: Mon Feb 6 10:33:42 2012 +0100

----------------------------------------------------------------------
 CHANGES.txt                                        |    2 +-
 .../org/apache/cassandra/db/ColumnFamilyStore.java |   23 ++++++++-------
 .../apache/cassandra/io/sstable/SSTableReader.java |    5 ++-
 .../cassandra/net/OutboundTcpConnection.java       |    5 ---
 4 files changed, 17 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/8eccb80a/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index bdf7f57..48a8074 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -36,7 +36,7 @@
  * Use separate writer thread in SSTableSimpleUnsortedWriter (CASSANDRA-3619)
  * fsync the directory after new sstable or commitlog segment are created 
(CASSANDRA-3250)
  * fix minor issues reported by FindBugs (CASSANDRA-3658)
- * global key/row caches (CASSANDRA-3143)
+ * global key/row caches (CASSANDRA-3143, 3849)
  * optimize memtable iteration during range scan (CASSANDRA-3638)
  * introduce 'crc_check_chance' in CompressionParameters to support
    a checksum percentage checking chance similarly to read-repair 
(CASSANDRA-3611)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8eccb80a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java 
b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
index 65d7c60..921e886 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@ -372,6 +372,9 @@ public class ColumnFamilyStore implements 
ColumnFamilyStoreMBean
     // must be called after all sstables are loaded since row cache merges all 
row versions
     public void initRowCache()
     {
+        if (!isRowCacheEnabled())
+            return;
+
         long start = System.currentTimeMillis();
 
         AutoSavingCache<RowCacheKey, ColumnFamily> rowCache = 
CacheService.instance.rowCache;
@@ -391,11 +394,6 @@ public class ColumnFamilyStore implements 
ColumnFamilyStoreMBean
                         columnFamily));
     }
 
-    public AutoSavingCache<KeyCacheKey, Long> getKeyCache()
-    {
-        return CacheService.instance.keyCache;
-    }
-
     /**
      * See #{@code StorageService.loadNewSSTables(String, String)} for more 
info
      *
@@ -1045,8 +1043,7 @@ public class ColumnFamilyStore implements 
ColumnFamilyStoreMBean
 
     public ColumnFamily cacheRow(Integer cfId, DecoratedKey decoratedKey)
     {
-        CFMetaData.Caching caching = metadata.getCaching();
-        assert caching == CFMetaData.Caching.ALL || caching == 
CFMetaData.Caching.ROWS_ONLY
+        assert isRowCacheEnabled()
                 : String.format("Row cache is not enabled on column family [" 
+ getColumnFamilyName() + "]");
 
         RowCacheKey key = new RowCacheKey(cfId, decoratedKey);
@@ -1077,10 +1074,7 @@ public class ColumnFamilyStore implements 
ColumnFamilyStoreMBean
         long start = System.nanoTime();
         try
         {
-            CFMetaData.Caching caching = metadata.getCaching();
-            if (caching == CFMetaData.Caching.NONE
-                || caching == CFMetaData.Caching.KEYS_ONLY
-                || CacheService.instance.rowCache.getCapacity() == 0)
+            if (!isRowCacheEnabled())
             {
                 ColumnFamily cf = getTopLevelColumns(filter, gcBefore, false);
 
@@ -1834,4 +1828,11 @@ public class ColumnFamilyStore implements 
ColumnFamilyStoreMBean
         DataTracker.View view = data.getView();
         return view.sstables.isEmpty() && view.memtable.getOperations() == 0 
&& view.memtablesPendingFlush.isEmpty();
     }
+
+    private boolean isRowCacheEnabled()
+    {
+        return !(metadata.getCaching() == CFMetaData.Caching.NONE
+              || metadata.getCaching() == CFMetaData.Caching.KEYS_ONLY
+              || CacheService.instance.rowCache.getCapacity() == 0);
+    }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8eccb80a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java 
b/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
index e5a8f40..2e166b2 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
@@ -621,7 +621,10 @@ public class SSTableReader extends SSTable
     {
         CFMetaData.Caching caching = metadata.getCaching();
 
-        if (keyCache == null || caching == CFMetaData.Caching.NONE || caching 
== CFMetaData.Caching.ROWS_ONLY)
+        if (keyCache == null
+                || caching == CFMetaData.Caching.NONE
+                || caching == CFMetaData.Caching.ROWS_ONLY
+                || keyCache.getCapacity() == 0)
             return;
 
         // avoid keeping a permanent reference to the original key buffer

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8eccb80a/src/java/org/apache/cassandra/net/OutboundTcpConnection.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/net/OutboundTcpConnection.java 
b/src/java/org/apache/cassandra/net/OutboundTcpConnection.java
index 741f7f0..f9d866d 100644
--- a/src/java/org/apache/cassandra/net/OutboundTcpConnection.java
+++ b/src/java/org/apache/cassandra/net/OutboundTcpConnection.java
@@ -91,11 +91,6 @@ public class OutboundTcpConnection extends Thread
         enqueue(CLOSE_SENTINEL, null);
     }
 
-    void softCloseSocket()
-    {
-        enqueue(CLOSE_SENTINEL, null);
-    }
-
     public void run()
     {
         while (true)

Reply via email to