Updated Branches: refs/heads/trunk 8ab2473fe -> f3d3b4394
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/f3d3b439 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f3d3b439 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f3d3b439 Branch: refs/heads/trunk Commit: f3d3b43940b53bb6a90411ffec96abdf20929618 Parents: 8ab2473 Author: Vijay Parthasarathy <[email protected]> Authored: Thu Apr 12 20:54:47 2012 -0700 Committer: Vijay Parthasarathy <[email protected]> Committed: Thu Apr 12 20:58:52 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/f3d3b439/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/f3d3b439/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 151c620..52c1f96 100644 --- a/src/java/org/apache/cassandra/config/Config.java +++ b/src/java/org/apache/cassandra/config/Config.java @@ -133,6 +133,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/f3d3b439/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 daae743..8816733 100644 --- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java +++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java @@ -193,6 +193,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"); @@ -1055,4 +1057,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/f3d3b439/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 8f06f69..e46e407 100644 --- a/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java +++ b/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java @@ -88,14 +88,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(); } @@ -369,7 +370,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);
