Return-Path: X-Original-To: apmail-cassandra-commits-archive@www.apache.org Delivered-To: apmail-cassandra-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 21C2A9753 for ; Fri, 16 Mar 2012 11:03:32 +0000 (UTC) Received: (qmail 83299 invoked by uid 500); 16 Mar 2012 11:03:31 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 83239 invoked by uid 500); 16 Mar 2012 11:03:31 -0000 Mailing-List: contact commits-help@cassandra.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cassandra.apache.org Delivered-To: mailing list commits@cassandra.apache.org Received: (qmail 83115 invoked by uid 99); 16 Mar 2012 11:03:31 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 16 Mar 2012 11:03:31 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 5AD5A7517; Fri, 16 Mar 2012 11:03:31 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: xedin@apache.org To: commits@cassandra.apache.org X-Mailer: ASF-Git Admin Mailer Subject: [3/3] git commit: skip reading saved key cache if CF's caching strategy is NONE or ROWS_ONLY patch by Pavel Yaskevich; reviewed by Jonathan Ellis for CASSANDRA-3954 Message-Id: <20120316110331.5AD5A7517@tyr.zones.apache.org> Date: Fri, 16 Mar 2012 11:03:31 +0000 (UTC) skip reading saved key cache if CF's caching strategy is NONE or ROWS_ONLY patch by Pavel Yaskevich; reviewed by Jonathan Ellis for CASSANDRA-3954 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/6423bfe7 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/6423bfe7 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/6423bfe7 Branch: refs/heads/trunk Commit: 6423bfe791fb7fc9f1b84cd18e614c7725797aaa Parents: c290372 Author: Pavel Yaskevich Authored: Wed Mar 14 22:59:23 2012 +0300 Committer: Pavel Yaskevich Committed: Fri Mar 16 13:58:08 2012 +0300 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../org/apache/cassandra/config/CFMetaData.java | 1 + .../org/apache/cassandra/db/ColumnFamilyStore.java | 25 ++++++++++++--- 3 files changed, 22 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/6423bfe7/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 65b1961..f0de7d1 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -22,6 +22,7 @@ * Add type information to new schema_ columnfamilies and remove thrift serialization for schema (CASSANDRA-3792) * add missing column validator options to the CLI help (CASSANDRA-3926) + * skip reading saved key cache if CF's caching strategy is NONE or ROWS_ONLY (CASSANDRA-3954) Merged from 1.0: * always compact away deleted hints immediately after handoff (CASSANDRA-3955) * delete hints from dropped ColumnFamilies on handoff instead of http://git-wip-us.apache.org/repos/asf/cassandra/blob/6423bfe7/src/java/org/apache/cassandra/config/CFMetaData.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/config/CFMetaData.java b/src/java/org/apache/cassandra/config/CFMetaData.java index bebd9f6..157bb9e 100644 --- a/src/java/org/apache/cassandra/config/CFMetaData.java +++ b/src/java/org/apache/cassandra/config/CFMetaData.java @@ -324,6 +324,7 @@ public final class CFMetaData .keyValidator(info.getValidator()) .readRepairChance(0.0) .dcLocalReadRepairChance(0.0) + .caching(Caching.NONE) .reloadSecondaryIndexMetadata(parent); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/6423bfe7/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 a69989e..ef9bc90 100644 --- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java +++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java @@ -71,6 +71,8 @@ import org.apache.cassandra.utils.*; import org.apache.cassandra.utils.IntervalTree.Interval; import org.cliffc.high_scale_lib.NonBlockingHashMap; +import static org.apache.cassandra.config.CFMetaData.Caching; + public class ColumnFamilyStore implements ColumnFamilyStoreMBean { private static Logger logger = LoggerFactory.getLogger(ColumnFamilyStore.class); @@ -199,7 +201,12 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean metadata.compressionParameters = CompressionParameters.create(opts); } - private ColumnFamilyStore(Table table, String columnFamilyName, IPartitioner partitioner, int generation, CFMetaData metadata, Directories directories) + private ColumnFamilyStore(Table table, + String columnFamilyName, + IPartitioner partitioner, + int generation, + CFMetaData metadata, + Directories directories) { assert metadata != null : "null metadata for " + table + ":" + columnFamilyName; @@ -213,12 +220,17 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean this.indexManager = new SecondaryIndexManager(this); fileIndexGenerator.set(generation); + Caching caching = metadata.getCaching(); + if (logger.isDebugEnabled()) logger.debug("Starting CFS {}", columnFamily); // scan for sstables corresponding to this cf and load them data = new DataTracker(this); - Set savedKeys = CacheService.instance.keyCache.readSaved(table.name, columnFamily); + Set savedKeys = caching == Caching.NONE || caching == Caching.ROWS_ONLY + ? Collections.emptySet() + : CacheService.instance.keyCache.readSaved(table.name, columnFamily); + Directories.SSTableLister sstables = directories.sstableLister().skipCompacted(true).skipTemporary(true); data.addInitialSSTables(SSTableReader.batchOpen(sstables.list().entrySet(), savedKeys, data, metadata, this.partitioner)); @@ -298,7 +310,10 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean return createColumnFamilyStore(table, columnFamily, StorageService.getPartitioner(), Schema.instance.getCFMetaData(table.name, columnFamily)); } - public static synchronized ColumnFamilyStore createColumnFamilyStore(Table table, String columnFamily, IPartitioner partitioner, CFMetaData metadata) + public static synchronized ColumnFamilyStore createColumnFamilyStore(Table table, + String columnFamily, + IPartitioner partitioner, + CFMetaData metadata) { // get the max generation number, to prevent generation conflicts Directories directories = Directories.create(table.name, columnFamily); @@ -1940,8 +1955,8 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean private boolean isRowCacheEnabled() { - return !(metadata.getCaching() == CFMetaData.Caching.NONE - || metadata.getCaching() == CFMetaData.Caching.KEYS_ONLY + return !(metadata.getCaching() == Caching.NONE + || metadata.getCaching() == Caching.KEYS_ONLY || CacheService.instance.rowCache.getCapacity() == 0); }