This is an automated email from the ASF dual-hosted git repository. wuzhiguo pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/ambari.git
The following commit(s) were added to refs/heads/trunk by this push: new c79e80b678 AMBARI-25414: Configure heartbeat timeout (#3507) c79e80b678 is described below commit c79e80b678a14566531617fb53157a4591a66611 Author: Zhiguo Wu <wuzhi...@apache.org> AuthorDate: Tue Nov 15 16:09:15 2022 +0800 AMBARI-25414: Configure heartbeat timeout (#3507) --- .../ambari/server/agent/HeartBeatHandler.java | 7 +++--- .../ambari/server/configuration/Configuration.java | 10 +++++++++ .../server/agent/HeartbeatProcessorTest.java | 2 +- .../ambari/server/agent/HeartbeatTestHelper.java | 6 +++++- .../ambari/server/agent/TestHeartbeatHandler.java | 2 +- .../ambari/server/agent/TestHeartbeatMonitor.java | 25 ++++++++++++++++------ .../apache/ambari/server/state/host/HostTest.java | 4 +++- 7 files changed, 42 insertions(+), 14 deletions(-) diff --git a/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java b/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java index 063abc70af..3b1f572868 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java @@ -79,8 +79,6 @@ public class HeartBeatHandler { private final Encryptor<AgentConfigsUpdateEvent> encryptor; private HeartbeatMonitor heartbeatMonitor; private HeartbeatProcessor heartbeatProcessor; - - @Inject private Configuration config; @Inject @@ -103,11 +101,12 @@ public class HeartBeatHandler { private Map<String, HeartBeatResponse> hostResponses = new ConcurrentHashMap<>(); @Inject - public HeartBeatHandler(Clusters fsm, ActionManager am, @Named("AgentConfigEncryptor") Encryptor<AgentConfigsUpdateEvent> encryptor, + public HeartBeatHandler(Configuration c, Clusters fsm, ActionManager am, @Named("AgentConfigEncryptor") Encryptor<AgentConfigsUpdateEvent> encryptor, Injector injector) { + config = c; this.clusterFsm = fsm; this.encryptor = encryptor; - this.heartbeatMonitor = new HeartbeatMonitor(fsm, am, 60000, injector); + heartbeatMonitor = new HeartbeatMonitor(fsm, am, config.getHeartbeatMonitorInterval(), injector); this.heartbeatProcessor = new HeartbeatProcessor(fsm, am, heartbeatMonitor, injector); //TODO modify to match pattern injector.injectMembers(this); } diff --git a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java index 93a76625d7..087ca70232 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java @@ -325,6 +325,12 @@ public class Configuration { // Ambari server log4j file name public static final String AMBARI_LOG_FILE = "log4j.properties"; + @Markdown( + description = "Interval for heartbeat presence checks.", + examples = {"60000","600000"} ) + public static final ConfigurationProperty<Integer> HEARTBEAT_MONITORING_INTERVAL = new ConfigurationProperty<>( + "heartbeat.monitoring.interval",60000); + /** * The directory on the Ambari Server file system used for storing * Ambari Agent bootstrap information such as request responses. @@ -3378,6 +3384,10 @@ public class Configuration { return getProperty(SYS_PREPPED_HOSTS); } + public Integer getHeartbeatMonitorInterval() { + return Integer.parseInt(getProperty(HEARTBEAT_MONITORING_INTERVAL)); + } + /** * Return {@code true} if we forced to work with legacy repositories * diff --git a/ambari-server/src/test/java/org/apache/ambari/server/agent/HeartbeatProcessorTest.java b/ambari-server/src/test/java/org/apache/ambari/server/agent/HeartbeatProcessorTest.java index b42aec66c6..3571e72017 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/agent/HeartbeatProcessorTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/agent/HeartbeatProcessorTest.java @@ -1047,7 +1047,7 @@ public class HeartbeatProcessorTest { hostObject.setIPv6("ipv6"); hostObject.setOsType(DummyOsType); - HeartBeatHandler handler = new HeartBeatHandler(fsm, am, Encryptor.NONE, injector); + HeartBeatHandler handler = new HeartBeatHandler(config, fsm, am, Encryptor.NONE, injector); Register reg = new Register(); HostInfo hi = new HostInfo(); hi.setHostName(DummyHostname1); diff --git a/ambari-server/src/test/java/org/apache/ambari/server/agent/HeartbeatTestHelper.java b/ambari-server/src/test/java/org/apache/ambari/server/agent/HeartbeatTestHelper.java index a4bc199220..58e9852cde 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/agent/HeartbeatTestHelper.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/agent/HeartbeatTestHelper.java @@ -44,6 +44,7 @@ import org.apache.ambari.server.actionmanager.Request; import org.apache.ambari.server.actionmanager.Stage; import org.apache.ambari.server.actionmanager.StageFactory; import org.apache.ambari.server.api.services.AmbariMetaInfo; +import org.apache.ambari.server.configuration.Configuration; import org.apache.ambari.server.events.publishers.STOMPUpdatePublisher; import org.apache.ambari.server.orm.InMemoryDefaultTestModule; import org.apache.ambari.server.orm.OrmTestHelper; @@ -82,6 +83,9 @@ public class HeartbeatTestHelper { @Inject Clusters clusters; + @Inject + Configuration configuration; + @Inject Injector injector; @@ -127,7 +131,7 @@ public class HeartbeatTestHelper { public HeartBeatHandler getHeartBeatHandler(ActionManager am) throws InvalidStateTransitionException, AmbariException { - HeartBeatHandler handler = new HeartBeatHandler(clusters, am, Encryptor.NONE, injector); + HeartBeatHandler handler = new HeartBeatHandler(configuration, clusters, am, Encryptor.NONE, injector); Register reg = new Register(); HostInfo hi = new HostInfo(); hi.setHostName(DummyHostname1); diff --git a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java index 75bd581e03..f8cf31a5ee 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java @@ -386,7 +386,7 @@ public class TestHeartbeatHandler { } private HeartBeatHandler createHeartBeatHandler() { - return new HeartBeatHandler(clusters, actionManagerTestHelper.getMockActionManager(), Encryptor.NONE, injector); + return new HeartBeatHandler(config, clusters, actionManagerTestHelper.getMockActionManager(), Encryptor.NONE, injector); } @Test diff --git a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatMonitor.java b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatMonitor.java index a0ff2a5918..7465f8f22a 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatMonitor.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatMonitor.java @@ -22,6 +22,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; import java.sql.SQLException; import java.util.Collections; @@ -118,8 +119,10 @@ public class TestHeartbeatMonitor { String hostname = "host1"; fsm.addHost(hostname); ActionManager am = mock(ActionManager.class); + Configuration configuration = mock(Configuration.class); + when(configuration.getHeartbeatMonitorInterval()).thenReturn(10); HeartbeatMonitor hm = new HeartbeatMonitor(fsm, am, 10, injector); - HeartBeatHandler handler = new HeartBeatHandler(fsm, am, Encryptor.NONE, injector); + HeartBeatHandler handler = new HeartBeatHandler(configuration, fsm, am, Encryptor.NONE, injector); Register reg = new Register(); reg.setHostname(hostname); reg.setResponseId(12); @@ -187,7 +190,9 @@ public class TestHeartbeatMonitor { ActionManager am = mock(ActionManager.class); HeartbeatMonitor hm = new HeartbeatMonitor(clusters, am, heartbeatMonitorWakeupIntervalMS, injector); - HeartBeatHandler handler = new HeartBeatHandler(clusters, am, Encryptor.NONE, injector); + Configuration configuration = mock(Configuration.class); + when(configuration.getHeartbeatMonitorInterval()).thenReturn(60000); + HeartBeatHandler handler = new HeartBeatHandler(configuration, clusters, am, Encryptor.NONE, injector); Register reg = new Register(); reg.setHostname(hostname1); reg.setResponseId(12); @@ -306,7 +311,9 @@ public class TestHeartbeatMonitor { ActionManager am = mock(ActionManager.class); HeartbeatMonitor hm = new HeartbeatMonitor(clusters, am, heartbeatMonitorWakeupIntervalMS, injector); - HeartBeatHandler handler = new HeartBeatHandler(clusters, am, Encryptor.NONE, injector); + Configuration configuration = mock(Configuration.class); + when(configuration.getHeartbeatMonitorInterval()).thenReturn(60000); + HeartBeatHandler handler = new HeartBeatHandler(configuration, clusters, am, Encryptor.NONE, injector); Register reg = new Register(); reg.setHostname(hostname1); reg.setResponseId(12); @@ -401,7 +408,9 @@ public class TestHeartbeatMonitor { ActionManager am = mock(ActionManager.class); HeartbeatMonitor hm = new HeartbeatMonitor(clusters, am, heartbeatMonitorWakeupIntervalMS, injector); - HeartBeatHandler handler = new HeartBeatHandler(clusters, am, Encryptor.NONE, injector); + Configuration configuration = mock(Configuration.class); + when(configuration.getHeartbeatMonitorInterval()).thenReturn(60000); + HeartBeatHandler handler = new HeartBeatHandler(configuration, clusters, am, Encryptor.NONE, injector); Register reg = new Register(); reg.setHostname(hostname1); reg.setResponseId(12); @@ -476,7 +485,9 @@ public class TestHeartbeatMonitor { ActionManager am = mock(ActionManager.class); HeartbeatMonitor hm = new HeartbeatMonitor(clusters, am, 10, injector); - HeartBeatHandler handler = new HeartBeatHandler(clusters, am, Encryptor.NONE, injector); + Configuration configuration = mock(Configuration.class); + when(configuration.getHeartbeatMonitorInterval()).thenReturn(10); + HeartBeatHandler handler = new HeartBeatHandler(configuration, clusters, am, Encryptor.NONE, injector); Register reg = new Register(); reg.setHostname(hostname1); @@ -598,7 +609,9 @@ public class TestHeartbeatMonitor { ActionManager am = mock(ActionManager.class); HeartbeatMonitor hm = new HeartbeatMonitor(clusters, am, heartbeatMonitorWakeupIntervalMS, injector); - HeartBeatHandler handler = new HeartBeatHandler(clusters, am, Encryptor.NONE, injector); + Configuration configuration = mock(Configuration.class); + when(configuration.getHeartbeatMonitorInterval()).thenReturn(60000); + HeartBeatHandler handler = new HeartBeatHandler(configuration, clusters, am, Encryptor.NONE, injector); Register reg = new Register(); reg.setHostname(hostname1); reg.setResponseId(12); diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/host/HostTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/host/HostTest.java index 53fe8af46f..84c7f3f19e 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/state/host/HostTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/state/host/HostTest.java @@ -38,6 +38,7 @@ import org.apache.ambari.server.agent.DiskInfo; import org.apache.ambari.server.agent.HeartBeatHandler; import org.apache.ambari.server.agent.HostInfo; import org.apache.ambari.server.api.services.AmbariMetaInfo; +import org.apache.ambari.server.configuration.Configuration; import org.apache.ambari.server.events.publishers.AmbariEventPublisher; import org.apache.ambari.server.orm.GuiceJpaInitializer; import org.apache.ambari.server.orm.InMemoryDefaultTestModule; @@ -131,9 +132,10 @@ public class HostTest { Clusters clusters = mock(Clusters.class); ActionManager manager = mock(ActionManager.class); Injector injector = mock(Injector.class); + Configuration configuration = mock(Configuration.class); doNothing().when(injector).injectMembers(any()); when(injector.getInstance(AmbariEventPublisher.class)).thenReturn(mock(AmbariEventPublisher.class)); - HeartBeatHandler handler = new HeartBeatHandler(clusters, manager, Encryptor.NONE, injector); + HeartBeatHandler handler = new HeartBeatHandler(configuration, clusters, manager, Encryptor.NONE, injector); String os = handler.getOsType("RedHat", "6.1"); Assert.assertEquals("redhat6", os); os = handler.getOsType("RedHat", "6"); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@ambari.apache.org For additional commands, e-mail: commits-h...@ambari.apache.org