ARTEMIS-2021 NetworkHealthCheck should only restart servers after net outages
This commit is contained in:
parent
d2063131f4
commit
26208b76c7
|
@ -60,6 +60,8 @@ public class NetworkHealthCheck extends ActiveMQScheduledComponent {
|
||||||
// To be used on tests. As we use the loopback as a valid address on tests.
|
// To be used on tests. As we use the loopback as a valid address on tests.
|
||||||
private boolean ignoreLoopback = false;
|
private boolean ignoreLoopback = false;
|
||||||
|
|
||||||
|
private boolean ownShutdown = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The timeout to be used on isReachable
|
* The timeout to be used on isReachable
|
||||||
*/
|
*/
|
||||||
|
@ -274,7 +276,7 @@ public class NetworkHealthCheck extends ActiveMQScheduledComponent {
|
||||||
|
|
||||||
if (healthy) {
|
if (healthy) {
|
||||||
for (ActiveMQComponent component : componentList) {
|
for (ActiveMQComponent component : componentList) {
|
||||||
if (!component.isStarted()) {
|
if (!component.isStarted() && ownShutdown) {
|
||||||
try {
|
try {
|
||||||
ActiveMQUtilLogger.LOGGER.startingService(component.toString());
|
ActiveMQUtilLogger.LOGGER.startingService(component.toString());
|
||||||
component.start();
|
component.start();
|
||||||
|
@ -282,6 +284,7 @@ public class NetworkHealthCheck extends ActiveMQScheduledComponent {
|
||||||
ActiveMQUtilLogger.LOGGER.errorStartingComponent(e, component.toString());
|
ActiveMQUtilLogger.LOGGER.errorStartingComponent(e, component.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ownShutdown = false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (ActiveMQComponent component : componentList) {
|
for (ActiveMQComponent component : componentList) {
|
||||||
|
@ -289,6 +292,7 @@ public class NetworkHealthCheck extends ActiveMQScheduledComponent {
|
||||||
try {
|
try {
|
||||||
ActiveMQUtilLogger.LOGGER.stoppingService(component.toString());
|
ActiveMQUtilLogger.LOGGER.stoppingService(component.toString());
|
||||||
component.stop();
|
component.stop();
|
||||||
|
ownShutdown = true;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
ActiveMQUtilLogger.LOGGER.errorStoppingComponent(e, component.toString());
|
ActiveMQUtilLogger.LOGGER.errorStoppingComponent(e, component.toString());
|
||||||
}
|
}
|
||||||
|
|
|
@ -142,6 +142,31 @@ public class NetworkHealthTest {
|
||||||
Assert.assertTrue(check.check(address));
|
Assert.assertTrue(check.check(address));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testAlreadyShutdown() throws Exception {
|
||||||
|
assumeTrue(purePingWorks(IPV6_LOCAL));
|
||||||
|
ReusableLatch latch = new ReusableLatch(0);
|
||||||
|
NetworkHealthCheck check = addCheck(new NetworkHealthCheck(null, 100, 100) {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
super.run();
|
||||||
|
latch.countDown();
|
||||||
|
System.out.println("Check");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
check.addComponent(component);
|
||||||
|
InetAddress address = InetAddress.getByName("127.0.0.1");
|
||||||
|
check.addAddress(address);
|
||||||
|
|
||||||
|
component.stop();
|
||||||
|
|
||||||
|
latch.setCount(1);
|
||||||
|
Assert.assertTrue(latch.await(1, TimeUnit.MINUTES));
|
||||||
|
|
||||||
|
Assert.assertFalse("NetworkHealthCheck should have no business on restarting the component, the network was never down, hence no check needed!", component.isStarted());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testParseSpaces() throws Exception {
|
public void testParseSpaces() throws Exception {
|
||||||
NetworkHealthCheck check = addCheck(new NetworkHealthCheck(null, 100, 100));
|
NetworkHealthCheck check = addCheck(new NetworkHealthCheck(null, 100, 100));
|
||||||
|
|
Loading…
Reference in New Issue