You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2012/04/13 17:36:06 UTC

[12/16] git commit: make cache skipping optional patch by harishd; reviewed by Vijay for CASSANDRA-2635

make cache skipping optional
patch by harishd; reviewed by Vijay for CASSANDRA-2635


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

Branch: refs/heads/trunk
Commit: 20bd8281fab66852659201a76a9c525cdf64b710
Parents: c215a4c
Author: Vijay Parthasarathy <vi...@gmail.com>
Authored: Thu Apr 12 20:54:47 2012 -0700
Committer: Vijay Parthasarathy <vi...@gmail.com>
Committed: Thu Apr 12 20:54:47 2012 -0700

----------------------------------------------------------------------
 conf/cassandra.yaml                                |    5 +++++
 src/java/org/apache/cassandra/config/Config.java   |    1 +
 .../cassandra/config/DatabaseDescriptor.java       |    7 +++++++
 .../apache/cassandra/io/sstable/SSTableWriter.java |    8 +++++---
 4 files changed, 18 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/20bd8281/conf/cassandra.yaml
----------------------------------------------------------------------
diff --git a/conf/cassandra.yaml b/conf/cassandra.yaml
index 0d94b0b..2f6a7da 100644
--- a/conf/cassandra.yaml
+++ b/conf/cassandra.yaml
@@ -29,6 +29,11 @@ max_hint_window_in_ms: 3600000 # one hour
 # Sleep this long after delivering each hint
 hinted_handoff_throttle_delay_in_ms: 1
 
+# The following setting populates the page cache on memtable flush and compaction
+# WARNING: Enable this setting only when the whole node's data fits in memory.
+# Defaults to: false
+# populate_buffer_cache_on_flush: false
+
 # authentication backend, implementing IAuthenticator; used to identify users
 authenticator: org.apache.cassandra.auth.AllowAllAuthenticator
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/20bd8281/src/java/org/apache/cassandra/config/Config.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/Config.java b/src/java/org/apache/cassandra/config/Config.java
index 253594b..cb1847e 100644
--- a/src/java/org/apache/cassandra/config/Config.java
+++ b/src/java/org/apache/cassandra/config/Config.java
@@ -136,6 +136,7 @@ public class Config
     public int row_cache_save_period = 0;
     public int row_cache_keys_to_save = Integer.MAX_VALUE;
     public String row_cache_provider = ConcurrentLinkedHashCacheProvider.class.getSimpleName();
+    public boolean populate_io_cache_on_flush = false;
 
     private static boolean loadYaml = true;
     private static boolean outboundBindAny = false;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/20bd8281/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
index e74ac13..b6a1d4e 100644
--- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
+++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
@@ -194,6 +194,8 @@ public class DatabaseDescriptor
             if (conf.disk_access_mode == Config.DiskAccessMode.mmap)
                 MmappedSegmentedFile.initCleaner();
 
+	        logger.debug("page_cache_hinting is " + conf.populate_io_cache_on_flush);
+
             /* Authentication and authorization backend, implementing IAuthenticator and IAuthority */
             if (conf.authenticator != null)
                 authenticator = FBUtilities.<IAuthenticator>construct(conf.authenticator, "authenticator");
@@ -1056,4 +1058,9 @@ public class DatabaseDescriptor
     {
         return conf.streaming_socket_timeout_in_ms;
     }
+
+    public static boolean populateIOCacheOnFlush()
+    {
+        return conf.populate_io_cache_on_flush;
+    }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/20bd8281/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java b/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
index b1fcc79..d74514f 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
@@ -90,14 +90,15 @@ public class SSTableWriter extends SSTable
             dbuilder = SegmentedFile.getCompressedBuilder();
             dataFile = CompressedSequentialWriter.open(getFilename(),
                                                        descriptor.filenameFor(Component.COMPRESSION_INFO),
-                                                       true,
+                                                       !DatabaseDescriptor.populateIOCacheOnFlush(),
                                                        metadata.compressionParameters(),
                                                        sstableMetadataCollector);
         }
         else
         {
             dbuilder = SegmentedFile.getBuilder(DatabaseDescriptor.getDiskAccessMode());
-            dataFile = SequentialWriter.open(new File(getFilename()), true);
+            dataFile = SequentialWriter.open(new File(getFilename()), 
+			                      !DatabaseDescriptor.populateIOCacheOnFlush());
             dataFile.setComputeDigest();
         }
 
@@ -395,7 +396,8 @@ public class SSTableWriter extends SSTable
 
         IndexWriter(long keyCount) throws IOException
         {
-            indexFile = SequentialWriter.open(new File(descriptor.filenameFor(SSTable.COMPONENT_INDEX)), true);
+            indexFile = SequentialWriter.open(new File(descriptor.filenameFor(SSTable.COMPONENT_INDEX)),
+                                              !DatabaseDescriptor.populateIOCacheOnFlush());
             builder = SegmentedFile.getBuilder(DatabaseDescriptor.getIndexAccessMode());
             summary = new IndexSummary(keyCount);