Repository: cassandra Updated Branches: refs/heads/trunk dc1bc81f6 -> e73fccdcd
Disable mmap on Windows (2.1 branch) Patch by jmckenzie; reviewed by belliottsmith for CASSANDRA-6993 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/98719141 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/98719141 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/98719141 Branch: refs/heads/trunk Commit: 987191418849191258519464665223f48620920c Parents: 93f679e Author: Joshua McKenzie <jmcken...@apache.org> Authored: Tue Dec 16 14:29:49 2014 -0600 Committer: Joshua McKenzie <jmcken...@apache.org> Committed: Tue Dec 16 14:29:49 2014 -0600 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../cassandra/config/DatabaseDescriptor.java | 35 +++++++++++++------- 2 files changed, 24 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/98719141/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 6c0f2da..d95e02e 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 2.1.3 + * Disable mmap on Windows (CASSANDRA-6993) * Add missing ConsistencyLevels to cassandra-stress (CASSANDRA-8253) * Add auth support to cassandra-stress (CASSANDRA-7985) * Fix ArrayIndexOutOfBoundsException when generating error message http://git-wip-us.apache.org/repos/asf/cassandra/blob/98719141/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 2ec0172..83b3636 100644 --- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java +++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java @@ -195,23 +195,34 @@ public class DatabaseDescriptor if (conf.commitlog_total_space_in_mb == null) conf.commitlog_total_space_in_mb = hasLargeAddressSpace() ? 8192 : 32; - /* evaluate the DiskAccessMode Config directive, which also affects indexAccessMode selection */ - if (conf.disk_access_mode == Config.DiskAccessMode.auto) - { - conf.disk_access_mode = hasLargeAddressSpace() ? Config.DiskAccessMode.mmap : Config.DiskAccessMode.standard; - indexAccessMode = conf.disk_access_mode; - logger.info("DiskAccessMode 'auto' determined to be {}, indexAccessMode is {}", conf.disk_access_mode, indexAccessMode); - } - else if (conf.disk_access_mode == Config.DiskAccessMode.mmap_index_only) + // Always force standard mode access on Windows - CASSANDRA-6993. Windows won't allow deletion of hard-links to files that + // are memory-mapped which causes trouble with snapshots. + if (FBUtilities.isWindows()) { conf.disk_access_mode = Config.DiskAccessMode.standard; - indexAccessMode = Config.DiskAccessMode.mmap; - logger.info("DiskAccessMode is {}, indexAccessMode is {}", conf.disk_access_mode, indexAccessMode); + indexAccessMode = conf.disk_access_mode; + logger.info("Windows environment detected. DiskAccessMode set to {}, indexAccessMode {}", conf.disk_access_mode, indexAccessMode); } else { - indexAccessMode = conf.disk_access_mode; - logger.info("DiskAccessMode is {}, indexAccessMode is {}", conf.disk_access_mode, indexAccessMode); + /* evaluate the DiskAccessMode Config directive, which also affects indexAccessMode selection */ + if (conf.disk_access_mode == Config.DiskAccessMode.auto) + { + conf.disk_access_mode = hasLargeAddressSpace() ? Config.DiskAccessMode.mmap : Config.DiskAccessMode.standard; + indexAccessMode = conf.disk_access_mode; + logger.info("DiskAccessMode 'auto' determined to be {}, indexAccessMode is {}", conf.disk_access_mode, indexAccessMode); + } + else if (conf.disk_access_mode == Config.DiskAccessMode.mmap_index_only) + { + conf.disk_access_mode = Config.DiskAccessMode.standard; + indexAccessMode = Config.DiskAccessMode.mmap; + logger.info("DiskAccessMode is {}, indexAccessMode is {}", conf.disk_access_mode, indexAccessMode); + } + else + { + indexAccessMode = conf.disk_access_mode; + logger.info("DiskAccessMode is {}, indexAccessMode is {}", conf.disk_access_mode, indexAccessMode); + } } /* Authentication and authorization backend, implementing IAuthenticator and IAuthorizer */