summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuangrongFu <fu.guangrong@zte.com.cn>2022-03-02 21:00:36 +0800
committerGuangrongFu <fu.guangrong@zte.com.cn>2022-03-02 21:00:36 +0800
commitecf54e8ad1182aa14b5f942160e1834725a432f9 (patch)
tree063920ac285f7279609c6c405b115e4f03e614d5
parentc211beead420cf96019ef19bac2d207dede95004 (diff)
bugfix - fixed the healthcheck problem
Issue-ID: HOLMES-512 Signed-off-by: GuangrongFu <fu.guangrong@zte.com.cn> Change-Id: Ice381df0b40853815b2f7e2bd8ab70af304629c1
-rw-r--r--rulemgt/src/main/java/org/onap/holmes/rulemgt/Initializer.java23
-rw-r--r--rulemgt/src/main/java/org/onap/holmes/rulemgt/RuleActiveApp.java2
-rw-r--r--rulemgt/src/test/java/org/onap/holmes/rulemgt/InitializerTest.java15
3 files changed, 40 insertions, 0 deletions
diff --git a/rulemgt/src/main/java/org/onap/holmes/rulemgt/Initializer.java b/rulemgt/src/main/java/org/onap/holmes/rulemgt/Initializer.java
index c39de60..812ee48 100644
--- a/rulemgt/src/main/java/org/onap/holmes/rulemgt/Initializer.java
+++ b/rulemgt/src/main/java/org/onap/holmes/rulemgt/Initializer.java
@@ -30,6 +30,7 @@ import javax.annotation.PostConstruct;
import javax.inject.Inject;
import java.util.HashSet;
import java.util.Set;
+import java.util.concurrent.TimeUnit;
import static org.onap.holmes.common.utils.CommonUtils.getEnv;
import static org.onap.holmes.common.utils.CommonUtils.isIpAddress;
@@ -37,6 +38,7 @@ import static org.onap.holmes.common.utils.CommonUtils.isIpAddress;
@Service
public class Initializer {
private static final Logger logger = LoggerFactory.getLogger(Initializer.class);
+ private static boolean readyForMsbReg = false;
private MsbRegister msbRegister;
@Inject
@@ -46,6 +48,7 @@ public class Initializer {
@PostConstruct
private void init() {
+ waitUntilReady();
try {
msbRegister.register2Msb(createMicroServiceInfo());
} catch (CorrelationException e) {
@@ -53,6 +56,26 @@ public class Initializer {
}
}
+ private void waitUntilReady() {
+ int count = 1;
+ while(!readyForMsbReg) {
+ if (count > 20) {
+ break;
+ }
+ int interval = 5 * count++;
+ logger.info("Not ready for MSB registration. Try again after {} seconds...", interval);
+ try {
+ TimeUnit.SECONDS.sleep(interval);
+ } catch (InterruptedException e) {
+ logger.info(e.getMessage(), e);
+ }
+ }
+ }
+
+ public static void setReadyForMsbReg(boolean readyForMsbReg) {
+ Initializer.readyForMsbReg = readyForMsbReg;
+ }
+
private MicroServiceInfo createMicroServiceInfo() {
String[] serviceIpAndPort = MicroServiceConfig.getMicroServiceIpAndPort();
MicroServiceInfo msinfo = new MicroServiceInfo();
diff --git a/rulemgt/src/main/java/org/onap/holmes/rulemgt/RuleActiveApp.java b/rulemgt/src/main/java/org/onap/holmes/rulemgt/RuleActiveApp.java
index a9a78c8..cedcde0 100644
--- a/rulemgt/src/main/java/org/onap/holmes/rulemgt/RuleActiveApp.java
+++ b/rulemgt/src/main/java/org/onap/holmes/rulemgt/RuleActiveApp.java
@@ -45,6 +45,8 @@ public class RuleActiveApp extends IOCApplication<RuleAppConfig> {
environment.servlets().addFilter("customFilter", new TransactionIdFilter()).addMappingForUrlPatterns(EnumSet
.allOf(DispatcherType.class), true, "/*");
+
+ Initializer.setReadyForMsbReg(true);
}
}
diff --git a/rulemgt/src/test/java/org/onap/holmes/rulemgt/InitializerTest.java b/rulemgt/src/test/java/org/onap/holmes/rulemgt/InitializerTest.java
index 120aba2..f658d35 100644
--- a/rulemgt/src/test/java/org/onap/holmes/rulemgt/InitializerTest.java
+++ b/rulemgt/src/test/java/org/onap/holmes/rulemgt/InitializerTest.java
@@ -26,6 +26,8 @@ import org.powermock.core.classloader.annotations.SuppressStaticInitializationFo
import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.reflect.internal.WhiteboxImpl;
+import java.util.concurrent.TimeUnit;
+
@RunWith(PowerMockRunner.class)
@PrepareForTest(MicroServiceConfig.class)
@SuppressStaticInitializationFor("org.onap.holmes.common.utils.CommonUtils")
@@ -45,8 +47,21 @@ public class InitializerTest {
PowerMock.replayAll();
+ setReadyFlagAfter(3);
+
WhiteboxImpl.invokeMethod(initializer, "init");
PowerMock.verifyAll();
}
+
+ private void setReadyFlagAfter(final int second) {
+ new Thread(() -> {
+ try {
+ TimeUnit.SECONDS.sleep(second);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ Initializer.setReadyForMsbReg(true);
+ }).start();
+ }
} \ No newline at end of file