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)