From e772b6d924c8e53c2ab1744faddc610baf1b6287 Mon Sep 17 00:00:00 2001 From: Jason Tedor Date: Fri, 15 Jul 2016 14:29:36 -0400 Subject: [PATCH] Add log message about enforcing bootstrap checks This commit adds a log message when bootstrap checks are enforced informing the user that they are enforced because they are bound to an external network interface. We also log if bootstrap checks are being enforced but system checks are being ignored. Relates #19451 --- .../bootstrap/BootstrapCheck.java | 7 ++++++ .../bootstrap/BootstrapCheckTests.java | 22 +++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/core/src/main/java/org/elasticsearch/bootstrap/BootstrapCheck.java b/core/src/main/java/org/elasticsearch/bootstrap/BootstrapCheck.java index db74e4b3731..b32751d757d 100644 --- a/core/src/main/java/org/elasticsearch/bootstrap/BootstrapCheck.java +++ b/core/src/main/java/org/elasticsearch/bootstrap/BootstrapCheck.java @@ -104,6 +104,13 @@ final class BootstrapCheck { final List errors = new ArrayList<>(); final List ignoredErrors = new ArrayList<>(); + if (enforceLimits) { + logger.info("bound or publishing to a non-loopback or non-link-local address, enforcing bootstrap checks"); + } + if (enforceLimits && ignoreSystemChecks) { + logger.warn("enforcing bootstrap checks but ignoring system bootstrap checks, consider not ignoring system checks"); + } + for (final Check check : checks) { if (check.check()) { if ((!enforceLimits || (check.isSystemCheck() && ignoreSystemChecks)) && !check.alwaysEnforce()) { diff --git a/core/src/test/java/org/elasticsearch/bootstrap/BootstrapCheckTests.java b/core/src/test/java/org/elasticsearch/bootstrap/BootstrapCheckTests.java index 5336066b1e2..1c4cd5b4e87 100644 --- a/core/src/test/java/org/elasticsearch/bootstrap/BootstrapCheckTests.java +++ b/core/src/test/java/org/elasticsearch/bootstrap/BootstrapCheckTests.java @@ -44,6 +44,7 @@ import static org.hamcrest.Matchers.not; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; public class BootstrapCheckTests extends ESTestCase { @@ -65,6 +66,23 @@ public class BootstrapCheckTests extends ESTestCase { BootstrapCheck.check(Settings.EMPTY, boundTransportAddress); } + public void testNoLogMessageInNonProductionMode() { + final ESLogger logger = mock(ESLogger.class); + BootstrapCheck.check(false, randomBoolean(), Collections.emptyList(), logger); + verifyNoMoreInteractions(logger); + } + + public void testLogMessageInProductionMode() { + final ESLogger logger = mock(ESLogger.class); + final boolean ignoreSystemChecks = randomBoolean(); + BootstrapCheck.check(true, ignoreSystemChecks, Collections.emptyList(), logger); + verify(logger).info("bound or publishing to a non-loopback or non-link-local address, enforcing bootstrap checks"); + if (ignoreSystemChecks) { + verify(logger).warn("enforcing bootstrap checks but ignoring system bootstrap checks, consider not ignoring system checks"); + } + verifyNoMoreInteractions(logger); + } + public void testEnforceLimitsWhenBoundToNonLocalAddress() { final List transportAddresses = new ArrayList<>(); final TransportAddress nonLocalTransportAddress = mock(TransportAddress.class); @@ -545,12 +563,16 @@ public class BootstrapCheckTests extends ESTestCase { // nothing should happen if we ignore system checks BootstrapCheck.check(true, true, Collections.singletonList(check), logger); + verify(logger).info("bound or publishing to a non-loopback or non-link-local address, enforcing bootstrap checks"); + verify(logger).warn("enforcing bootstrap checks but ignoring system bootstrap checks, consider not ignoring system checks"); verify(logger).warn("error"); + verifyNoMoreInteractions(logger); reset(logger); // nothing should happen if we ignore all checks BootstrapCheck.check(false, randomBoolean(), Collections.singletonList(check), logger); verify(logger).warn("error"); + verifyNoMoreInteractions(logger); } public void testAlwaysEnforcedChecks() {