summaryrefslogtreecommitdiffstats
path: root/catalog-be/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-be/src/main')
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/switchover/detector/SwitchoverDetector.java136
1 files changed, 66 insertions, 70 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/switchover/detector/SwitchoverDetector.java b/catalog-be/src/main/java/org/openecomp/sdc/be/switchover/detector/SwitchoverDetector.java
index cbcbb03480..fec00d2f67 100644
--- a/catalog-be/src/main/java/org/openecomp/sdc/be/switchover/detector/SwitchoverDetector.java
+++ b/catalog-be/src/main/java/org/openecomp/sdc/be/switchover/detector/SwitchoverDetector.java
@@ -21,6 +21,15 @@
package org.openecomp.sdc.be.switchover.detector;
import com.google.common.annotations.VisibleForTesting;
+import java.net.InetAddress;
+import java.util.Properties;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.TimeUnit;
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.openecomp.sdc.be.config.BeEcompErrorManager;
@@ -30,21 +39,11 @@ import org.openecomp.sdc.common.http.client.api.HttpRequest;
import org.openecomp.sdc.common.log.wrappers.Logger;
import org.springframework.stereotype.Component;
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
-import java.net.InetAddress;
-import java.util.Properties;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.TimeUnit;
@Component("switchover-detector")
public class SwitchoverDetector {
- protected static String SWITCHOVER_DETECTOR_LOG_CONTEXT = "switchover.detector";
+ private static final String SWITCHOVER_DETECTOR_LOG_CONTEXT = "switchover.detector";
private SwitchoverDetectorConfig switchoverDetectorConfig;
@@ -66,12 +65,8 @@ public class SwitchoverDetector {
private ScheduledFuture<?> scheduledFuture = null;
- ScheduledExecutorService switchoverDetectorScheduler = Executors.newSingleThreadScheduledExecutor(new ThreadFactory() {
- @Override
- public Thread newThread(Runnable r) {
- return new Thread(r, "Switchover-Detector-Task");
- }
- });
+ ScheduledExecutorService switchoverDetectorScheduler =
+ Executors.newSingleThreadScheduledExecutor(runnable -> new Thread(runnable, "Switchover-Detector-Task"));
SwitchoverDetectorScheduledTask switchoverDetectorScheduledTask = null;
@@ -113,58 +108,57 @@ public class SwitchoverDetector {
this.siteMode = mode;
}
- private Boolean queryBe() {
- return queryGss(switchoverDetectorConfig.getgBeFqdn(), switchoverDetectorConfig.getBeVip(), maxBeQueryAttempts);
- }
+ public class SwitchoverDetectorScheduledTask implements Runnable {
- private Boolean queryFe() {
- return queryGss(switchoverDetectorConfig.getgFeFqdn(), switchoverDetectorConfig.getFeVip(), maxFeQueryAttempts);
- }
+ private Boolean queryGss(String fqdn, String vip, int maxAttempts) {
- private void initializeSiteMode() {
- while (siteMode.equals(SwitchoverDetectorState.UNKNOWN.getState())) {
+ Boolean result = null;
+ int attempts = 0;
- beMatch = queryBe();
- feMatch = queryFe();
+ while (result == null && (++attempts < maxAttempts)) {
+ try {
+ InetAddress inetAddress = InetAddress.getByName(fqdn);
+ result = inetAddress.getHostAddress().equals(vip);
- if (beMatch != null && beMatch.equals(feMatch)) {
- if (beMatch) {
- setSiteMode(SwitchoverDetectorState.ACTIVE.getState());
- } else {
- setSiteMode(SwitchoverDetectorState.STANDBY.getState());
+ } catch (Exception e) {
+ String message = e.getMessage();
+ if (message == null) {
+ message = e.getClass().getName();
+ }
+ logger.debug("Error occurred during switchover detector query, Result is {}", message, e);
}
}
+ if (null == result) {
+ BeEcompErrorManager.getInstance().logFqdnResolveError(SWITCHOVER_DETECTOR_LOG_CONTEXT,
+ "host " + fqdn + " not resolved after " + attempts + " attempts");
+ }
+ return result;
}
- }
-
- private Boolean queryGss(String fqdn, String vip, int maxAttempts) {
- Boolean result = null;
- int attempts = 0;
-
- while (result == null && (++attempts < maxAttempts)) {
- try {
- InetAddress inetAddress = InetAddress.getByName(fqdn);
- result = inetAddress.getHostAddress().equals(vip);
-
- } catch (Exception e) {
- String message = e.getMessage();
- if (message == null) {
- message = e.getClass().getName();
- }
- logger.debug("Error occured during switchover detector query, Result is {}", message, e);
- }
+ private Boolean queryBe() {
+ return queryGss(switchoverDetectorConfig.getgBeFqdn(), switchoverDetectorConfig.getBeVip(),
+ maxBeQueryAttempts);
}
- if (null == result) {
- BeEcompErrorManager.getInstance().logFqdnResolveError(SWITCHOVER_DETECTOR_LOG_CONTEXT, "host " + fqdn + " not resolved after " + attempts + " attempts");
+
+ private Boolean queryFe() {
+ return queryGss(switchoverDetectorConfig.getgFeFqdn(), switchoverDetectorConfig.getFeVip(),
+ maxFeQueryAttempts);
}
- return result;
- }
- public class SwitchoverDetectorScheduledTask implements Runnable {
+ private void initializeSiteMode() {
+ while (siteMode.equals(SwitchoverDetectorState.UNKNOWN.getState())) {
- public SwitchoverDetectorScheduledTask() {
+ beMatch = queryBe();
+ feMatch = queryFe();
+ if (beMatch != null && beMatch.equals(feMatch)) {
+ if (beMatch) {
+ setSiteMode(SwitchoverDetectorState.ACTIVE.getState());
+ } else {
+ setSiteMode(SwitchoverDetectorState.STANDBY.getState());
+ }
+ }
+ }
}
@Override
@@ -180,7 +174,8 @@ public class SwitchoverDetector {
return;
}
- Boolean updateRequired = siteMode.equals(SwitchoverDetectorState.STANDBY.getState()) && (beRes || feRes) && (beMatch != beRes || feMatch != feRes);
+ Boolean updateRequired = siteMode.equals(SwitchoverDetectorState.STANDBY.getState()) && (beRes || feRes)
+ && (!beMatch.equals(beRes) || !feMatch.equals(feRes));
Boolean prevModeStandby = siteMode.equals(SwitchoverDetectorState.STANDBY.getState());
updateSiteModeAndPriority(beRes && feRes, prevModeStandby, updateRequired);
@@ -189,12 +184,8 @@ public class SwitchoverDetector {
feMatch = feRes;
}
- ExecutorService switchoverDetectorExecutor = Executors.newSingleThreadExecutor(new ThreadFactory() {
- @Override
- public Thread newThread(Runnable r) {
- return new Thread(r, "Switchover-Detector-Thread");
- }
- });
+ ExecutorService switchoverDetectorExecutor =
+ Executors.newSingleThreadExecutor(runnable -> new Thread(runnable, "Switchover-Detector-Thread"));
private void updateSiteModeAndPriority(Boolean bothMatch, Boolean previousModeStandby, Boolean updateRequired) {
if (bothMatch && previousModeStandby) {
@@ -225,7 +216,7 @@ public class SwitchoverDetector {
if (message == null) {
message = e.getClass().getName();
}
- logger.debug("Error occured during change site priority request, Result is {}", message, e);
+ logger.debug("Error occurred during change site priority request, Result is {}", message, e);
}
}
@@ -241,7 +232,7 @@ public class SwitchoverDetector {
if (message == null) {
message = e.getClass().getName();
}
- logger.debug("Error occured during publish network request, Result is {}", message, e);
+ logger.debug("Error occurred during publish network request, Result is {}", message, e);
}
}
@@ -256,7 +247,8 @@ public class SwitchoverDetector {
private void init() {
logger.info("Enter init method of SwitchoverDetector");
- switchoverDetectorConfig = ConfigurationManager.getConfigurationManager().getConfiguration().getSwitchoverDetector();
+ switchoverDetectorConfig =
+ ConfigurationManager.getConfigurationManager().getConfiguration().getSwitchoverDetector();
if (!switchoverDetectorConfig.getEnabled()) {
logger.info("switchover detector service is disabled");
@@ -265,16 +257,16 @@ public class SwitchoverDetector {
Long detectorIntervalConfig = switchoverDetectorConfig.getInterval();
if (detectorIntervalConfig != null) {
- detectorInterval = detectorIntervalConfig.longValue();
+ detectorInterval = detectorIntervalConfig;
}
Integer maxAttempts = switchoverDetectorConfig.getBeResolveAttempts();
if (maxAttempts != null) {
- maxBeQueryAttempts = maxAttempts.intValue();
+ maxBeQueryAttempts = maxAttempts;
}
maxAttempts = switchoverDetectorConfig.getFeResolveAttempts();
if (maxAttempts != null) {
- maxFeQueryAttempts = maxAttempts.intValue();
+ maxFeQueryAttempts = maxAttempts;
}
logger.info("switchover detector service is enabled, interval is {} seconds", detectorInterval);
@@ -299,9 +291,13 @@ public class SwitchoverDetector {
}
+ /**
+ * This method starts the switchover detector threads in the background.
+ */
public void startSwitchoverDetectorTask() {
if (this.scheduledFuture == null) {
- this.scheduledFuture = this.switchoverDetectorScheduler.scheduleAtFixedRate(switchoverDetectorScheduledTask, 0, detectorInterval, TimeUnit.SECONDS);
+ this.scheduledFuture = this.switchoverDetectorScheduler
+ .scheduleAtFixedRate(switchoverDetectorScheduledTask, 0, detectorInterval, TimeUnit.SECONDS);
}
}