warn if mlockall is not working once enabled in settings (instead of debug logging), closes #1194.

This commit is contained in:
Shay Banon 2011-08-02 14:07:27 +03:00
parent 885c80f8e5
commit 9e621afeb8
3 changed files with 8 additions and 10 deletions

View File

@ -7,18 +7,16 @@
#path.work: /path/to/work
#path.logs: /path/to/logs
# Force all memory to be locked, forcing the JVM to never swap
#bootstrap.mlockall: true
# Gateway Settings
# Controls when to start the initial recovery process when starting a new cluster
# allowing for better reused of existing data during recovery.
#gateway.recover_after_nodes: 1
#gateway.recover_after_time: 5m
#gateway.expected_nodes: 2
# Force all memory to be locked, forcing JVM to never swap
# (make sure to set MIN and MAX mem to the same value)
# In order to see if this works or not, set the `common.jna` logging to DEBUG level.
# A solution to “Unknown mlockall error 0” can be to set ulimit -l unlimited.
#bootstrap.mlockall: true
# Controls the minimum number of master eligible nodes this node should "see"
# in order to operate within the cluster.
# Set this to a higher value (2-4) when running more than 2 nodes in the cluster

View File

@ -40,9 +40,9 @@ public class CLibrary {
try {
Native.register("c");
} catch (NoClassDefFoundError e) {
logger.debug("JNA not found. Native methods will be disabled.");
logger.warn("jna not found. native methods (mlockall) will be disabled.");
} catch (UnsatisfiedLinkError e) {
logger.debug("Unable to link C library. Native methods will be disabled.");
logger.debug("unable to link C library. native methods (mlockall) will be disabled.");
}
}

View File

@ -43,12 +43,12 @@ public class Natives {
if (errno != Integer.MIN_VALUE) {
if (errno == CLibrary.ENOMEM && System.getProperty("os.name").toLowerCase().contains("linux")) {
logger.debug("Unable to lock JVM memory (ENOMEM)."
logger.warn("Unable to lock JVM memory (ENOMEM)."
+ " This can result in part of the JVM being swapped out."
+ " Increase RLIMIT_MEMLOCK or run elasticsearch as root.");
} else if (!System.getProperty("os.name").toLowerCase().contains("mac")) {
// OS X allows mlockall to be called, but always returns an error
logger.debug("Unknown mlockall error " + errno);
logger.warn("Unknown mlockall error " + errno);
}
}
}