Repository: cassandra Updated Branches: refs/heads/trunk 97dcba601 -> 15e7ac7d3
force Windows to use non-mapped i/o patch by Josh McKenzie; reviewed by Benedict Elliott Smith 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/15e7ac7d Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/15e7ac7d Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/15e7ac7d Branch: refs/heads/trunk Commit: 15e7ac7d37a49c7ff852057f6f124aee611470da Parents: 97dcba6 Author: Jonathan Ellis <[email protected]> Authored: Tue Apr 22 12:31:28 2014 -0500 Committer: Jonathan Ellis <[email protected]> Committed: Tue Apr 22 12:31:28 2014 -0500 ---------------------------------------------------------------------- .../cassandra/config/DatabaseDescriptor.java | 35 +++++++++++++------- .../org/apache/cassandra/utils/FBUtilities.java | 6 ++-- 2 files changed, 26 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/15e7ac7d/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 9f8a0df..cf11b77 100644 --- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java +++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java @@ -189,23 +189,34 @@ public class DatabaseDescriptor if (conf.commitlog_total_space_in_mb == null) conf.commitlog_total_space_in_mb = hasLargeAddressSpace() ? 1024 : 32; - /* evaluate the DiskAccessMode Config directive, which also affects indexAccessMode selection */ - if (conf.disk_access_mode == Config.DiskAccessMode.auto) + if (FBUtilities.isUnix()) { - 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); + /* 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); + } } + // 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. else { + conf.disk_access_mode = Config.DiskAccessMode.standard; indexAccessMode = conf.disk_access_mode; - logger.info("DiskAccessMode is {}, indexAccessMode is {}", conf.disk_access_mode, indexAccessMode); + logger.info("Non-unix environment detected. DiskAccessMode set to {}, indexAccessMode {}", conf.disk_access_mode, indexAccessMode); } /* Authentication and authorization backend, implementing IAuthenticator and IAuthorizer */ http://git-wip-us.apache.org/repos/asf/cassandra/blob/15e7ac7d/src/java/org/apache/cassandra/utils/FBUtilities.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/utils/FBUtilities.java b/src/java/org/apache/cassandra/utils/FBUtilities.java index 12c393a..a8c95de 100644 --- a/src/java/org/apache/cassandra/utils/FBUtilities.java +++ b/src/java/org/apache/cassandra/utils/FBUtilities.java @@ -70,11 +70,11 @@ public class FBUtilities public static final BigInteger TWO = new BigInteger("2"); private static final String DEFAULT_TRIGGER_DIR = "triggers"; - private static final String OPERATING_SYSTEM = System.getProperty("os.name").toLowerCase(); - private static volatile InetAddress localInetAddress; private static volatile InetAddress broadcastInetAddress; + private static final boolean isWindows = System.getProperty("os.name").startsWith("Windows"); + public static int getAvailableProcessors() { if (System.getProperty("cassandra.available_processors") != null) @@ -691,6 +691,6 @@ public class FBUtilities public static boolean isUnix() { - return OPERATING_SYSTEM.contains("nix") || OPERATING_SYSTEM.contains("nux") || OPERATING_SYSTEM.contains("aix"); + return !isWindows; } }
