You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by wu...@apache.org on 2022/11/15 08:09:21 UTC
[ambari] branch trunk updated: AMBARI-25414: Configure heartbeat timeout (#3507)
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 <wu...@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-unsubscribe@ambari.apache.org
For additional commands, e-mail: commits-help@ambari.apache.org