aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--integrity-audit/src/main/java/org/onap/policy/common/ia/DbAudit.java68
-rw-r--r--integrity-audit/src/main/java/org/onap/policy/common/ia/DbDAO.java12
-rw-r--r--integrity-audit/src/test/java/org/onap/policy/common/ia/test/DbAuditCompareEntriesTest.java26
-rw-r--r--integrity-audit/src/test/java/org/onap/policy/common/ia/test/DbDAOTest.java21
-rw-r--r--integrity-monitor/src/main/java/org/onap/policy/common/im/IntegrityMonitor.java780
-rw-r--r--integrity-monitor/src/main/java/org/onap/policy/common/im/jmx/ComponentAdmin.java87
-rw-r--r--integrity-monitor/src/main/java/org/onap/policy/common/im/jmx/ComponentAdminException.java42
-rw-r--r--integrity-monitor/src/test/java/org/onap/policy/common/im/test/IntegrityMonitorTest.java12
8 files changed, 457 insertions, 591 deletions
diff --git a/integrity-audit/src/main/java/org/onap/policy/common/ia/DbAudit.java b/integrity-audit/src/main/java/org/onap/policy/common/ia/DbAudit.java
index 0f354571..21bf5c8d 100644
--- a/integrity-audit/src/main/java/org/onap/policy/common/ia/DbAudit.java
+++ b/integrity-audit/src/main/java/org/onap/policy/common/ia/DbAudit.java
@@ -25,7 +25,10 @@ import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
import java.util.Properties;
+import java.util.Set;
import javax.persistence.Table;
@@ -111,7 +114,7 @@ public class DbAudit {
}
// Obtain all persistence class names for the PU we are auditing
- HashSet<String> classNameSet = dbDAO.getPersistenceClassNames();
+ Set<String> classNameSet = dbDAO.getPersistenceClassNames();
if(classNameSet == null || classNameSet.isEmpty()){
String msg = "DbAudit: For node " + resourceName + " Found no persistence class names";
@@ -139,7 +142,7 @@ public class DbAudit {
* This is the map of mismatched entries indexed by className. For
* each class name there is a list of mismatched entries
*/
- HashMap<String,HashSet<Object>> misMatchedMap = new HashMap<>();
+ Map<String,Set<Object>> misMatchedMap = new HashMap<>();
// We need to keep track of how long the audit is taking
long startTime = System.currentTimeMillis();
@@ -155,7 +158,7 @@ public class DbAudit {
}
// all instances of the class for myIae
- HashMap<Object,Object> myEntries = dbDAO.getAllMyEntries(clazzName);
+ Map<Object,Object> myEntries = dbDAO.getAllMyEntries(clazzName);
//get a map of the objects indexed by id. Does not necessarily have any entries
if (logger.isDebugEnabled()) {
@@ -184,7 +187,7 @@ public class DbAudit {
theirProperties.put(IntegrityAuditProperties.NODE_TYPE, iae.getNodeType());
//get a map of the instances for their iae indexed by id
- HashMap<Object,Object> theirEntries = dbDAO.getAllEntries(persistenceUnit, theirProperties, clazzName);
+ Map<Object,Object> theirEntries = dbDAO.getAllEntries(persistenceUnit, theirProperties, clazzName);
if (logger.isDebugEnabled()) {
logger.debug("dbAudit: For persistenceUnit="
+ persistenceUnit + ", clazzName=" + clazzName
@@ -197,9 +200,9 @@ public class DbAudit {
* Collect the IDs for the class where a mismatch occurred. We will check
* them again for all nodes later.
*/
- HashSet<Object> misMatchedKeySet = compareEntries(myEntries, theirEntries);
+ Set<Object> misMatchedKeySet = compareEntries(myEntries, theirEntries);
if(!misMatchedKeySet.isEmpty()){
- HashSet<Object> misMatchedEntry = misMatchedMap.get(clazzName);
+ Set<Object> misMatchedEntry = misMatchedMap.get(clazzName);
if(misMatchedEntry == null){
misMatchedMap.put(clazzName, misMatchedKeySet);
}else{
@@ -259,8 +262,8 @@ public class DbAudit {
}
// all instances of the class for myIae
- HashSet<Object> keySet = misMatchedMap.get(clazzName);
- HashMap<Object,Object> myEntries = dbDAO.getAllMyEntries(clazzName, keySet);
+ Set<Object> keySet = misMatchedMap.get(clazzName);
+ Map<Object,Object> myEntries = dbDAO.getAllMyEntries(clazzName, keySet);
//get a map of the objects indexed by id
if (logger.isDebugEnabled()) {
@@ -289,14 +292,14 @@ public class DbAudit {
theirProperties.put(IntegrityAuditProperties.NODE_TYPE, iae.getNodeType());
//get a map of the instances for their iae indexed by id
- HashMap<Object,Object> theirEntries = dbDAO.getAllEntries(persistenceUnit, theirProperties, clazzName, keySet);
+ Map<Object,Object> theirEntries = dbDAO.getAllEntries(persistenceUnit, theirProperties, clazzName, keySet);
/*
* Compare myEntries with theirEntries and get back a set of mismatched IDs.
* Collect the IDs for the class where a mismatch occurred. We will now
* write an error log for each.
*/
- HashSet<Object> misMatchedKeySet = compareEntries(myEntries, theirEntries);
+ Set<Object> misMatchedKeySet = compareEntries(myEntries, theirEntries);
if(!misMatchedKeySet.isEmpty()){
String keysString = "";
for(Object key: misMatchedKeySet){
@@ -349,22 +352,29 @@ public class DbAudit {
* @throws InterruptedException
* @throws DbDaoTransactionException
*/
- public void dbAuditSimulate(String resourceName, String persistenceUnit) throws InterruptedException,
- DbDaoTransactionException {
+ public void dbAuditSimulate(String resourceName, String persistenceUnit) throws DbAuditException {
- logger.info("dbAuditSimulate: Starting audit simulation for resourceName="
- + resourceName + ", persistenceUnit=" + persistenceUnit);
+ try {
+ logger.info("dbAuditSimulate: Starting audit simulation for resourceName="
+ + resourceName + ", persistenceUnit=" + persistenceUnit);
- for (int i = 0; i < AuditThread.AUDIT_SIMULATION_ITERATIONS; i++) {
- dbDAO.setLastUpdated();
- logger.info("dbAuditSimulate: i=" + i + ", sleeping "
- + AuditThread.AUDIT_SIMULATION_SLEEP_INTERVAL + "ms");
- Thread.sleep(AuditThread.AUDIT_SIMULATION_SLEEP_INTERVAL);
- }
-
- logger.info("dbAuditSimulate: Finished audit simulation for resourceName="
- + resourceName + ", persistenceUnit=" + persistenceUnit);
+ for (int i = 0; i < AuditThread.AUDIT_SIMULATION_ITERATIONS; i++) {
+ dbDAO.setLastUpdated();
+ logger.info("dbAuditSimulate: i=" + i + ", sleeping "
+ + AuditThread.AUDIT_SIMULATION_SLEEP_INTERVAL + "ms");
+ Thread.sleep(AuditThread.AUDIT_SIMULATION_SLEEP_INTERVAL);
+ }
+ logger.info("dbAuditSimulate: Finished audit simulation for resourceName="
+ + resourceName + ", persistenceUnit=" + persistenceUnit);
+
+ } catch(DbDaoTransactionException e) {
+ throw new DbAuditException(e);
+
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new DbAuditException(e);
+ }
}
/**
@@ -373,7 +383,7 @@ public class DbAudit {
* @param theirEntries
* @return
*/
- public HashSet<Object> compareEntries(HashMap<Object,Object> myEntries, HashMap<Object,Object> theirEntries){
+ public Set<Object> compareEntries(Map<Object,Object> myEntries, Map<Object,Object> theirEntries){
/*
* Compare the entries for the same key in each of the hashmaps. The comparison will be done by serializing the objects
* (create a byte array) and then do a byte array comparison. The audit will walk the local repository hash map comparing
@@ -385,8 +395,9 @@ public class DbAudit {
*
*/
HashSet<Object> misMatchedKeySet = new HashSet<>();
- for(Object key: myEntries.keySet()){
- byte[] mySerializedEntry = SerializationUtils.serialize((Serializable) myEntries.get(key));
+ for(Entry<Object, Object> ent: myEntries.entrySet()) {
+ Object key = ent.getKey();
+ byte[] mySerializedEntry = SerializationUtils.serialize((Serializable) ent.getValue());
byte[] theirSerializedEntry = SerializationUtils.serialize((Serializable) theirEntries.get(key));
if(!Arrays.equals(mySerializedEntry, theirSerializedEntry)){
logger.debug("compareEntries: For myEntries.key=" + key + ", entries do not match");
@@ -396,9 +407,10 @@ public class DbAudit {
}
}
//now compare it in the other direction to catch entries in their set that is not in my set
- for(Object key: theirEntries.keySet()){
+ for(Entry<Object, Object> ent: theirEntries.entrySet()) {
+ Object key = ent.getKey();
byte[] mySerializedEntry = SerializationUtils.serialize((Serializable) myEntries.get(key));
- byte[] theirSerializedEntry = SerializationUtils.serialize((Serializable) theirEntries.get(key));
+ byte[] theirSerializedEntry = SerializationUtils.serialize((Serializable) ent.getValue());
if(!Arrays.equals(mySerializedEntry, theirSerializedEntry)){
logger.debug("compareEntries: For theirEntries.key=" + key + ", entries do not match");
misMatchedKeySet.add(key);
diff --git a/integrity-audit/src/main/java/org/onap/policy/common/ia/DbDAO.java b/integrity-audit/src/main/java/org/onap/policy/common/ia/DbDAO.java
index 99503854..b30c7730 100644
--- a/integrity-audit/src/main/java/org/onap/policy/common/ia/DbDAO.java
+++ b/integrity-audit/src/main/java/org/onap/policy/common/ia/DbDAO.java
@@ -24,7 +24,9 @@ import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Properties;
+import java.util.Set;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
@@ -119,7 +121,7 @@ public class DbDAO {
* @param className
* @return
*/
- public HashMap<Object, Object> getAllMyEntries(String className) {
+ public Map<Object, Object> getAllMyEntries(String className) {
logger.debug("getAllMyEntries: Entering, className="
+ className);
HashMap<Object, Object> resultMap = new HashMap<>();
@@ -152,7 +154,7 @@ public class DbDAO {
* @param keySet
* @return
*/
- public HashMap<Object, Object> getAllMyEntries(String className, HashSet<Object> keySet){
+ public Map<Object, Object> getAllMyEntries(String className, Set<Object> keySet){
logger.debug("getAllMyEntries: Entering, className="
+ className + ",\n keySet=" + keySet);
@@ -180,7 +182,7 @@ public class DbDAO {
* @param className
* @return
*/
- public HashMap<Object,Object> getAllEntries(String persistenceUnit, Properties properties, String className){
+ public Map<Object,Object> getAllEntries(String persistenceUnit, Properties properties, String className){
logger.debug("getAllEntries: Entering, persistenceUnit="
+ persistenceUnit + ",\n className=" + className);
@@ -221,7 +223,7 @@ public class DbDAO {
* @return
*/
- public HashMap<Object,Object> getAllEntries(String persistenceUnit, Properties properties, String className, HashSet<Object> keySet){
+ public Map<Object,Object> getAllEntries(String persistenceUnit, Properties properties, String className, Set<Object> keySet){
logger.debug("getAllEntries: Entering, persistenceUnit="
+ persistenceUnit + ",\n properties= " + properties + ",\n className=" + className + ",\n keySet= " + keySet);
EntityManagerFactory theEmf = Persistence.createEntityManagerFactory(persistenceUnit, properties);
@@ -364,7 +366,7 @@ public class DbDAO {
* getPersistenceClassNames() gets all the persistence class names.
* @return
*/
- public HashSet<String> getPersistenceClassNames(){
+ public Set<String> getPersistenceClassNames(){
logger.debug("DbDAO: getPersistenceClassNames() entry");
HashSet<String> returnList = new HashSet<>();
final Metamodel mm = emf.getMetamodel();
diff --git a/integrity-audit/src/test/java/org/onap/policy/common/ia/test/DbAuditCompareEntriesTest.java b/integrity-audit/src/test/java/org/onap/policy/common/ia/test/DbAuditCompareEntriesTest.java
index d8388c58..3bedcb0b 100644
--- a/integrity-audit/src/test/java/org/onap/policy/common/ia/test/DbAuditCompareEntriesTest.java
+++ b/integrity-audit/src/test/java/org/onap/policy/common/ia/test/DbAuditCompareEntriesTest.java
@@ -26,7 +26,9 @@ import java.io.FileOutputStream;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.Map;
import java.util.Properties;
+import java.util.Set;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
@@ -129,7 +131,7 @@ public class DbAuditCompareEntriesTest {
String className = null;
//There is only one entry IntegrityAuditEntity, but we will check anyway
- HashSet<String> classNameSet = dbDAO.getPersistenceClassNames();
+ Set<String> classNameSet = dbDAO.getPersistenceClassNames();
for(String c : classNameSet){
if (c.equals("org.onap.policy.common.ia.jpa.IntegrityAuditEntity")){
className = c;
@@ -175,7 +177,7 @@ public class DbAuditCompareEntriesTest {
myEntries.put("pdp1", entry1);
theirEntries.put("pdp1", entry2);
- HashSet<Object> result = dbAudit.compareEntries(myEntries, theirEntries);
+ Set<Object> result = dbAudit.compareEntries(myEntries, theirEntries);
/*
* Assert that there are no mismatches returned
@@ -235,7 +237,7 @@ public class DbAuditCompareEntriesTest {
myEntries.put("pdp1", entry1);
theirEntries.put("pdp1", entry2);
- HashSet<Object> result = dbAudit.compareEntries(myEntries, theirEntries);
+ Set<Object> result = dbAudit.compareEntries(myEntries, theirEntries);
/*
* Assert that there was one mismatch
@@ -322,7 +324,7 @@ public class DbAuditCompareEntriesTest {
theirEntries.put("0", entry2);
theirEntries.put("2", entry4);
- HashSet<Object> mismatchResult = dbAudit.compareEntries(myEntries, theirEntries);
+ Set<Object> mismatchResult = dbAudit.compareEntries(myEntries, theirEntries);
/*
* Assert 3 mismatches/missing entries were found
@@ -343,8 +345,8 @@ public class DbAuditCompareEntriesTest {
dbDAO = new DbDAO(resourceName, persistenceUnit, properties);
DbAudit dbAudit = new DbAudit(dbDAO);
- HashSet<String> classNameSet = dbDAO.getPersistenceClassNames();
- HashSet<Object> mismatchResult = new HashSet<Object>();
+ Set<String> classNameSet = dbDAO.getPersistenceClassNames();
+ Set<Object> mismatchResult = new HashSet<Object>();
for(String c : classNameSet) {
if (c.equals("org.onap.policy.common.ia.jpa.IntegrityAuditEntity")){
String resourceName1 = resourceName;
@@ -537,10 +539,10 @@ public class DbAuditCompareEntriesTest {
new DbDAO("pdp2", persistenceUnit, properties2);
// Pull all entries and compare
- HashSet<String> classNameSet = dbDAO.getPersistenceClassNames();
- HashMap<Object, Object> myEntries;
- HashMap<Object, Object> theirEntries;
- HashSet<Object> mismatchResult = new HashSet<Object>();
+ Set<String> classNameSet = dbDAO.getPersistenceClassNames();
+ Map<Object, Object> myEntries;
+ Map<Object, Object> theirEntries;
+ Set<Object> mismatchResult = new HashSet<Object>();
String className;
for(String c : classNameSet) {
className = c;
@@ -572,7 +574,7 @@ public class DbAuditCompareEntriesTest {
String className = null;
//There is only one entry IntegrityAuditEntity, but we will check anyway
- HashSet<String> classNameSet = dbDAO.getPersistenceClassNames();
+ Set<String> classNameSet = dbDAO.getPersistenceClassNames();
for(String c : classNameSet){
if (c.equals("org.onap.policy.common.ia.test.jpa.IaTestEntity")){
className = c;
@@ -608,7 +610,7 @@ public class DbAuditCompareEntriesTest {
myEntries.put("0", iate);
theirEntries.put("0", iate2);
- HashSet<Object> result = dbAudit.compareEntries(myEntries, theirEntries);
+ Set<Object> result = dbAudit.compareEntries(myEntries, theirEntries);
/*
* Assert that there are no mismatches returned
diff --git a/integrity-audit/src/test/java/org/onap/policy/common/ia/test/DbDAOTest.java b/integrity-audit/src/test/java/org/onap/policy/common/ia/test/DbDAOTest.java
index 4fd51f6e..ac3bc587 100644
--- a/integrity-audit/src/test/java/org/onap/policy/common/ia/test/DbDAOTest.java
+++ b/integrity-audit/src/test/java/org/onap/policy/common/ia/test/DbDAOTest.java
@@ -20,7 +20,10 @@
package org.onap.policy.common.ia.test;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
/*
* All JUnits are designed to run in the local development environment
@@ -28,10 +31,11 @@ import static org.junit.Assert.*;
* tasks.
*/
import java.util.Date;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Properties;
+import java.util.Set;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
@@ -47,7 +51,6 @@ import javax.persistence.criteria.Root;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-
import org.onap.policy.common.ia.DbDAO;
import org.onap.policy.common.ia.DbDaoTransactionException;
import org.onap.policy.common.ia.IntegrityAuditProperties;
@@ -487,7 +490,7 @@ public class DbDAOTest {
try {
// Obtain a hash with the persisted objects
- HashMap<Object, Object> entries = d.getAllMyEntries("org.onap.policy.common.ia.jpa.IntegrityAuditEntity");
+ Map<Object, Object> entries = d.getAllMyEntries("org.onap.policy.common.ia.jpa.IntegrityAuditEntity");
// Assert there were 3 entries for that class
assertEquals(3, entries.size());
@@ -543,7 +546,7 @@ public class DbDAOTest {
}
// Obtain a hash with the persisted objects
- HashMap<Object, Object> entries = d.getAllMyEntries("org.onap.policy.common.ia.jpa.IntegrityAuditEntity", resultSet);
+ Map<Object, Object> entries = d.getAllMyEntries("org.onap.policy.common.ia.jpa.IntegrityAuditEntity", resultSet);
// Assert there were 3 entries for that class
assertEquals(3, entries.size());
@@ -591,7 +594,7 @@ public class DbDAOTest {
try {
// Obtain a hash with the persisted objects
- HashMap<Object, Object> entries = d.getAllEntries("integrityAuditPU", properties, "org.onap.policy.common.ia.jpa.IntegrityAuditEntity");
+ Map<Object, Object> entries = d.getAllEntries("integrityAuditPU", properties, "org.onap.policy.common.ia.jpa.IntegrityAuditEntity");
// Assert there were 3 entries for that class
assertEquals(3, entries.size());
@@ -647,7 +650,7 @@ public class DbDAOTest {
}
// Obtain a hash with the persisted objects
- HashMap<Object, Object> entries = d.getAllEntries("integrityAuditPU", properties, "org.onap.policy.common.ia.jpa.IntegrityAuditEntity", resultSet);
+ Map<Object, Object> entries = d.getAllEntries("integrityAuditPU", properties, "org.onap.policy.common.ia.jpa.IntegrityAuditEntity", resultSet);
// Assert there were 3 entries for that class
assertEquals(3, entries.size());
@@ -695,7 +698,7 @@ public class DbDAOTest {
try {
// Obtain a hash with the persisted objects
- HashMap<Object, Object> entries = d.getAllEntries(persistenceUnit, properties, "org.onap.policy.common.ia.jpa.IntegrityAuditEntity");
+ Map<Object, Object> entries = d.getAllEntries(persistenceUnit, properties, "org.onap.policy.common.ia.jpa.IntegrityAuditEntity");
// Assert there were 3 entries for that class
assertEquals(3, entries.size());
@@ -733,7 +736,7 @@ public class DbDAOTest {
e.printStackTrace();
}
// Retrieve persistence class names
- HashSet<String> result = d.getPersistenceClassNames();
+ Set<String> result = d.getPersistenceClassNames();
assertEquals(1, result.size());
}
}
diff --git a/integrity-monitor/src/main/java/org/onap/policy/common/im/IntegrityMonitor.java b/integrity-monitor/src/main/java/org/onap/policy/common/im/IntegrityMonitor.java
index 5b18b05d..4a09d66d 100644
--- a/integrity-monitor/src/main/java/org/onap/policy/common/im/IntegrityMonitor.java
+++ b/integrity-monitor/src/main/java/org/onap/policy/common/im/IntegrityMonitor.java
@@ -27,6 +27,7 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Properties;
import java.util.concurrent.TimeUnit;
@@ -132,7 +133,7 @@ public class IntegrityMonitor {
// A lead subsystem will have dependency groups with resource names in the
// properties file.
// For non-lead subsystems, the dependency_group property will be absent.
- private static String[] dep_groups = null;
+ private static String[] depGroups = null;
private static boolean isUnitTesting = false;
@@ -148,12 +149,12 @@ public class IntegrityMonitor {
// Node types
private enum NodeType {
- pdp_xacml, pdp_drools, pap, pap_admin, logparser, brms_gateway, astra_gateway, elk_server, pypdp
+ PDP_XACML, PDP_DROOLS, PAP, PAP_ADMIN, LOGPARSER, BRMS_GATEWAY, ASTRA_GATEWAY, ELK_SERVER, PYPDP
}
- private static String site_name;
- private static String node_type;
+ private static String siteName;
+ private static String nodeType;
private Date refreshStateAuditLastRunDate;
private static long refreshStateAuditIntervalMs = 600000; // run it once per
// 10 minutes
@@ -169,101 +170,12 @@ public class IntegrityMonitor {
private final Object checkWriteFpcLock = new Object();
private static final Object getInstanceLock = new Object();
private final Object refreshStateAuditLock = new Object();
- private final Object IMFLUSHLOCK = new Object();
+ private final Object imFlushLock = new Object();
private Map<String, String> allSeemsWellMap;
private Map<String, String> allNotWellMap;
/**
- * Get an instance of IntegrityMonitor for a given resource name. It creates
- * one if it does not exist. Only one instance is allowed to be created per
- * resource name.
- *
- * @param resourceName
- * The resource name of the resource
- * @param properties
- * a set of properties passed in from the resource
- * @return The new instance of IntegrityMonitor
- * @throws Exception
- * if unable to create jmx url or the constructor returns an
- * exception
- */
- public static IntegrityMonitor getInstance(String resourceName,
- Properties properties) throws Exception {
- synchronized (getInstanceLock) {
- if (logger.isDebugEnabled()) {
- logger.debug("getInstance() called - resourceName= {}",
- resourceName);
- }
- if (resourceName == null || resourceName.isEmpty()
- || properties == null) {
- logger.error("Error: getIntegrityMonitorInstance() called with invalid input");
- return null;
- }
-
- if (instance == null) {
- if (logger.isDebugEnabled()) {
- logger.debug("Creating new instance of IntegrityMonitor");
- }
- instance = new IntegrityMonitor(resourceName, properties);
- }
- return instance;
- }
- }
-
- public static IntegrityMonitor getInstance() throws Exception {
- if (logger.isDebugEnabled()) {
- logger.debug("getInstance() called");
- }
- if (instance == null) {
- String msg = "No IntegrityMonitor instance exists."
- + " Please use the method IntegrityMonitor.getInstance(String resourceName, Properties properties)";
- throw new IntegrityMonitorPropertiesException(msg);
- } else {
- return instance;
- }
- }
-
- /*
- * This is a facility used by JUnit testing to destroy the IntegrityMonitor
- * instance before creating a new one. It includes a delay of 2 seconds to
- * allow the FPManager to fully exit.
- */
- public static void deleteInstance() throws IntegrityMonitorException {
- if (logger.isDebugEnabled()) {
- logger.debug("deleteInstance() called");
- }
- if (isUnitTesting()) {
- // Stop the FPManager thread
-
- if (instance != null && instance.getFPManager() != null) {
- instance.getFPManager().stopAndExit();
-
- try {
- // Make sure it has exited
- Thread.sleep(2 * CYCLE_INTERVAL_MILLIS);
- } catch (InterruptedException e) {
- logger.error("deleteInstance: Interrupted while waiting for FPManaager to fully exit");
- e.printStackTrace();
- }
- if (instance.getFPManager().isAlive()) {
- logger.error("IntegrityMonitor.deleteInstance() Failed to kill FPManager thread");
- throw new IntegrityMonitorException(
- "IntegrityMonitor.deleteInstance() Failed to kill FPManager thread");
- }
- instance = null;
- }
- }
- if (logger.isDebugEnabled()) {
- logger.debug("deleteInstance() exit");
- }
- }
-
- private FPManager getFPManager() {
- return fpManager;
- }
-
- /**
* IntegrityMonitor constructor. It is invoked from the getInstance() method
* in this class or from the constructor of a child or sub-class. A class
* can extend the IntegrityMonitor class if there is a need to override any
@@ -350,17 +262,14 @@ public class IntegrityMonitor {
fpx.setFpcCount(fpCounter);
} else {
// Create a forward progress object
- if (logger.isDebugEnabled()) {
- logger.debug("Adding resource {} to ForwardProgress table",
- resourceName);
- }
+ logger.debug("Adding resource {} to ForwardProgress table", resourceName);
fpx = new ForwardProgressEntity();
}
// update/set columns in entry
fpx.setResourceName(resourceName);
em.persist(fpx);
// flush to the DB
- synchronized (IMFLUSHLOCK) {
+ synchronized (imFlushLock) {
em.flush();
}
@@ -388,21 +297,17 @@ public class IntegrityMonitor {
rrx.setLastUpdated(new Date());
} else {
// register resource by adding entry to table in DB
- if (logger.isDebugEnabled()) {
- logger.debug(
- "Adding resource {} to ResourceRegistration table",
- resourceName);
- }
+ logger.debug("Adding resource {} to ResourceRegistration table", resourceName);
rrx = new ResourceRegistrationEntity();
}
// update/set columns in entry
rrx.setResourceName(resourceName);
rrx.setResourceUrl(jmxUrl);
- rrx.setNodeType(node_type);
- rrx.setSite(site_name);
+ rrx.setNodeType(nodeType);
+ rrx.setSite(siteName);
em.persist(rrx);
// flush to the DB
- synchronized (IMFLUSHLOCK) {
+ synchronized (imFlushLock) {
et.commit();
}
@@ -412,7 +317,7 @@ public class IntegrityMonitor {
e);
try {
if (et.isActive()) {
- synchronized (IMFLUSHLOCK) {
+ synchronized (imFlushLock) {
et.rollback();
}
}
@@ -448,29 +353,104 @@ public class IntegrityMonitor {
}
+ /**
+ * Get an instance of IntegrityMonitor for a given resource name. It creates
+ * one if it does not exist. Only one instance is allowed to be created per
+ * resource name.
+ *
+ * @param resourceName
+ * The resource name of the resource
+ * @param properties
+ * a set of properties passed in from the resource
+ * @return The new instance of IntegrityMonitor
+ * @throws Exception
+ * if unable to create jmx url or the constructor returns an
+ * exception
+ */
+ public static IntegrityMonitor getInstance(String resourceName,
+ Properties properties) throws Exception {
+ synchronized (getInstanceLock) {
+ logger.debug("getInstance() called - resourceName= {}", resourceName);
+ if (resourceName == null || resourceName.isEmpty()
+ || properties == null) {
+ logger.error("Error: getIntegrityMonitorInstance() called with invalid input");
+ return null;
+ }
+
+ if (instance == null) {
+ logger.debug("Creating new instance of IntegrityMonitor");
+ instance = new IntegrityMonitor(resourceName, properties);
+ }
+ return instance;
+ }
+ }
+
+ public static IntegrityMonitor getInstance() throws Exception {
+ logger.debug("getInstance() called");
+ if (instance == null) {
+ String msg = "No IntegrityMonitor instance exists."
+ + " Please use the method IntegrityMonitor.getInstance(String resourceName, Properties properties)";
+ throw new IntegrityMonitorPropertiesException(msg);
+ } else {
+ return instance;
+ }
+ }
+
+ /*
+ * This is a facility used by JUnit testing to destroy the IntegrityMonitor
+ * instance before creating a new one. It includes a delay of 2 seconds to
+ * allow the FPManager to fully exit.
+ */
+ public static void deleteInstance() throws IntegrityMonitorException {
+ logger.debug("deleteInstance() called");
+ if (isUnitTesting() && instance != null && instance.getFPManager() != null) {
+ // Stop the FPManager thread
+ instance.getFPManager().stopAndExit();
+
+ try {
+ // Make sure it has exited
+ Thread.sleep(2L * CYCLE_INTERVAL_MILLIS);
+ } catch (InterruptedException e) {
+ logger.error("deleteInstance: Interrupted while waiting for FPManaager to fully exit", e);
+ Thread.currentThread().interrupt();
+ }
+ if (instance.getFPManager().isAlive()) {
+ logger.error("IntegrityMonitor.deleteInstance() Failed to kill FPManager thread");
+ throw new IntegrityMonitorException(
+ "IntegrityMonitor.deleteInstance() Failed to kill FPManager thread");
+ }
+ instance = null;
+ }
+ logger.debug("deleteInstance() exit");
+ }
+
+ private FPManager getFPManager() {
+ return fpManager;
+ }
+
private static String getJmxUrl() throws IntegrityMonitorException {
// get the jmx remote port and construct the JMX URL
Properties systemProps = System.getProperties();
- String jmx_port = systemProps
+ String jmxPort = systemProps
.getProperty("com.sun.management.jmxremote.port");
- String jmx_err_msg;
- if (jmx_port == null) {
- jmx_err_msg = "System property com.sun.management.jmxremote.port for JMX remote port is not set";
- logger.error("{}", jmx_err_msg);
+ String jmxErrMsg;
+ if (jmxPort == null) {
+ jmxErrMsg = "System property com.sun.management.jmxremote.port for JMX remote port is not set";
+ logger.error("{}", jmxErrMsg);
throw new IntegrityMonitorException("getJmxUrl exception: "
- + jmx_err_msg);
+ + jmxErrMsg);
}
int port = 0;
try {
- port = Integer.parseInt(jmx_port);
+ port = Integer.parseInt(jmxPort);
} catch (NumberFormatException e) {
- jmx_err_msg = "JMX remote port is not a valid integer value - "
- + jmx_port;
- logger.error("{}", jmx_err_msg);
+ jmxErrMsg = "JMX remote port is not a valid integer value - "
+ + jmxPort;
+ logger.error("{}", jmxErrMsg);
throw new IntegrityMonitorException("getJmxUrl exception: "
- + jmx_err_msg);
+ + jmxErrMsg);
}
try {
@@ -493,14 +473,12 @@ public class IntegrityMonitor {
}
// assemble the jmx url
- String jmx_url = "service:jmx:rmi:///jndi/rmi://" + jmxFqdn + ":"
+ String jmxUrl = "service:jmx:rmi:///jndi/rmi://" + jmxFqdn + ":"
+ port + "/jmxrmi";
- if (logger.isDebugEnabled()) {
- logger.debug("IntegerityMonitor - jmx url={}", jmx_url);
- }
+ logger.debug("IntegerityMonitor - jmx url={}", jmxUrl);
- return jmx_url;
+ return jmxUrl;
}
/**
@@ -511,25 +489,18 @@ public class IntegrityMonitor {
* information about any dependency (node) which has failed.
*/
public void evaluateSanity() throws Exception {
- if (logger.isDebugEnabled()) {
- logger.debug("evaluateSanity called ....");
- }
+ logger.debug("evaluateSanity called ....");
synchronized (evaluateSanityLock) {
- String error_msg = dependencyCheckErrorMsg;
- if (logger.isDebugEnabled()) {
- logger.debug("evaluateSanity dependencyCheckErrorMsg = {}",
- error_msg);
- }
+ String errorMsg = dependencyCheckErrorMsg;
+ logger.debug("evaluateSanity dependencyCheckErrorMsg = {}", errorMsg);
// check op state and throw exception if disabled
if ((stateManager.getOpState() != null)
&& stateManager.getOpState().equals(
StateManagement.DISABLED)) {
String msg = "Resource " + resourceName
- + " operation state is disabled. " + error_msg;
- if (logger.isDebugEnabled()) {
- logger.debug("{}", msg);
- }
+ + " operation state is disabled. " + errorMsg;
+ logger.debug("{}", msg);
throw new IntegrityMonitorException(msg);
}
@@ -539,9 +510,7 @@ public class IntegrityMonitor {
StateManagement.LOCKED)) {
String msg = "Resource " + resourceName
+ " is administratively locked";
- if (logger.isDebugEnabled()) {
- logger.debug("{}", msg);
- }
+ logger.debug("{}", msg);
throw new AdministrativeStateException(
"IntegrityMonitor Admin State Exception: " + msg);
}
@@ -550,9 +519,7 @@ public class IntegrityMonitor {
&& stateManager.getStandbyStatus().equals(
StateManagement.COLD_STANDBY)) {
String msg = "Resource " + resourceName + " is cold standby";
- if (logger.isDebugEnabled()) {
- logger.debug("{}", msg);
- }
+ logger.debug("{}", msg);
throw new StandbyStatusException(
"IntegrityMonitor Standby Status Exception: " + msg);
}
@@ -568,10 +535,8 @@ public class IntegrityMonitor {
* the error message is set then the evaluateSanity will return an error.
*/
public String stateCheck(String dep) {
- if (logger.isDebugEnabled()) {
- logger.debug("checking state of dependent resource: {}", dep);
- }
- String error_msg = null;
+ logger.debug("checking state of dependent resource: {}", dep);
+ String errorMsg = null;
ForwardProgressEntity forwardProgressEntity = null;
StateManagementEntity stateManagementEntity = null;
@@ -593,32 +558,28 @@ public class IntegrityMonitor {
forwardProgressEntity = (ForwardProgressEntity) fpList.get(0);
// refresh the object from DB in case cached data was returned
em.refresh(forwardProgressEntity);
- if (logger.isDebugEnabled()) {
- logger.debug(
- "Found entry in ForwardProgressEntity table for dependent Resource={}",
- dep);
- }
+ logger.debug("Found entry in ForwardProgressEntity table for dependent Resource={}", dep);
} else {
- error_msg = dep
+ errorMsg = dep
+ ": resource not found in ForwardProgressEntity database table";
- logger.error("{}", error_msg);
+ logger.error("{}", errorMsg);
}
- synchronized (IMFLUSHLOCK) {
+ synchronized (imFlushLock) {
et.commit();
}
} catch (Exception ex) {
// log an error
- error_msg = dep
+ errorMsg = dep
+ ": ForwardProgressEntity DB operation failed with exception: ";
- logger.error("{}", error_msg, ex);
- synchronized (IMFLUSHLOCK) {
+ logger.error("{}", errorMsg, ex);
+ synchronized (imFlushLock) {
if (et.isActive()) {
et.rollback();
}
}
}
- if (error_msg == null) {
+ if (errorMsg == null) {
// Start a transaction
et = em.getTransaction();
et.begin();
@@ -638,26 +599,22 @@ public class IntegrityMonitor {
// refresh the object from DB in case cached data was
// returned
em.refresh(stateManagementEntity);
- if (logger.isDebugEnabled()) {
- logger.debug(
- "Found entry in StateManagementEntity table for dependent Resource={}",
- dep);
- }
+ logger.debug("Found entry in StateManagementEntity table for dependent Resource={}", dep);
} else {
- error_msg = dep
+ errorMsg = dep
+ ": resource not found in state management entity database table";
- logger.error("{}", error_msg);
+ logger.error("{}", errorMsg);
}
- synchronized (IMFLUSHLOCK) {
+ synchronized (imFlushLock) {
et.commit();
}
} catch (Exception e) {
// log an error
- error_msg = dep
+ errorMsg = dep
+ ": StateManagementEntity DB read failed with exception: ";
- logger.error("{}", error_msg, e);
- synchronized (IMFLUSHLOCK) {
+ logger.error("{}", errorMsg, e);
+ synchronized (imFlushLock) {
if (et.isActive()) {
et.rollback();
}
@@ -666,33 +623,23 @@ public class IntegrityMonitor {
}
// verify that the ForwardProgress is current (check last_updated)
- if (error_msg == null) {
+ if (errorMsg == null) {
if (forwardProgressEntity != null && stateManagementEntity != null) {
Date date = new Date();
long diffMs = date.getTime()
- forwardProgressEntity.getLastUpdated().getTime();
- if (logger.isDebugEnabled()) {
- logger.debug("IntegrityMonitor.stateCheck(): diffMs = {}",
- diffMs);
- }
+ logger.debug("IntegrityMonitor.stateCheck(): diffMs = {}", diffMs);
// Threshold for a stale entry
long staleMs = 1000L * maxFpcUpdateInterval;
- if (logger.isDebugEnabled()) {
- logger.debug("IntegrityMonitor.stateCheck(): staleMs = {}",
- staleMs);
- }
+ logger.debug("IntegrityMonitor.stateCheck(): staleMs = {}", staleMs);
if (diffMs > staleMs) {
// ForwardProgress is stale. Disable it
try {
if (!stateManagementEntity.getOpState().equals(
StateManagement.DISABLED)) {
- if (logger.isDebugEnabled()) {
- logger.debug(
- "IntegrityMonitor.stateCheck(): Changing OpStat = disabled for {}",
- dep);
- }
+ logger.debug("IntegrityMonitor.stateCheck(): Changing OpStat = disabled for {}", dep);
stateManager.disableFailed(dep);
}
} catch (Exception e) {
@@ -718,47 +665,41 @@ public class IntegrityMonitor {
}
// check operation, admin and standby states of dependent resource
- if (error_msg == null) {
+ if (errorMsg == null) {
if (stateManagementEntity != null) {
if ((stateManager.getAdminState() != null)
&& stateManagementEntity.getAdminState().equals(
StateManagement.LOCKED)) {
- error_msg = dep + ": resource is administratively locked";
- logger.error("{}", error_msg);
+ errorMsg = dep + ": resource is administratively locked";
+ logger.error("{}", errorMsg);
} else if ((stateManager.getOpState() != null)
&& stateManagementEntity.getOpState().equals(
StateManagement.DISABLED)) {
- error_msg = dep + ": resource is operationally disabled";
- logger.error("{}", error_msg);
+ errorMsg = dep + ": resource is operationally disabled";
+ logger.error("{}", errorMsg);
} else if ((stateManager.getStandbyStatus() != null)
&& stateManagementEntity.getStandbyStatus().equals(
StateManagement.COLD_STANDBY)) {
- error_msg = dep + ": resource is cold standby";
- logger.error("{}", error_msg);
+ errorMsg = dep + ": resource is cold standby";
+ logger.error("{}", errorMsg);
}
} else {
- error_msg = dep
+ errorMsg = dep
+ ": could not check standy state of resource. stateManagementEntity == null.";
- logger.error("{}", error_msg);
+ logger.error("{}", errorMsg);
}
}
String returnMsg = "IntegrityMonitor.stateCheck(): returned error_msg: "
- + error_msg;
- if (logger.isDebugEnabled()) {
- logger.debug("{}", returnMsg);
- }
- return error_msg;
+ + errorMsg;
+ logger.debug("{}", returnMsg);
+ return errorMsg;
}
private String fpCheck(String dep) {
- if (logger.isDebugEnabled()) {
- logger.debug(
- "checking forward progress count of dependent resource: {}",
- dep);
- }
+ logger.debug("checking forward progress count of dependent resource: {}", dep);
- String error_msg = null;
+ String errorMsg = null;
// check FPC count - a changing FPC count indicates the resource JVM is
// running
@@ -789,21 +730,17 @@ public class IntegrityMonitor {
// if dependent resource FPC has not been updated, consider it
// an error
if ((currTime - fpx.getLastUpdated().getTime()) > (1000 * maxFpcUpdateInterval)) {
- error_msg = dep
+ errorMsg = dep
+ ": FP count has not been updated in the last "
+ maxFpcUpdateInterval + " seconds";
- logger.error("{}", error_msg);
+ logger.error("{}", errorMsg);
try {
// create instance of StateMangement class for dependent
StateManagement depStateManager = new StateManagement(
emf, dep);
if (!depStateManager.getOpState().equals(
StateManagement.DISABLED)) {
- if (logger.isDebugEnabled()) {
- logger.debug(
- "Forward progress not detected for dependent resource {}. Setting dependent's state to disable failed.",
- dep);
- }
+ logger.debug("Forward progress not detected for dependent resource {}. Setting dependent's state to disable failed.", dep);
depStateManager.disableFailed();
}
} catch (Exception e) {
@@ -815,32 +752,30 @@ public class IntegrityMonitor {
}
} else {
// resource entry not found in FPC table
- error_msg = dep
+ errorMsg = dep
+ ": resource not found in ForwardProgressEntity table in the DB";
- logger.error("{}", error_msg);
+ logger.error("{}", errorMsg);
}
- synchronized (IMFLUSHLOCK) {
+ synchronized (imFlushLock) {
et.commit();
}
} catch (Exception e) {
// log an error and continue
- error_msg = dep
+ errorMsg = dep
+ ": ForwardProgressEntity DB read failed with exception: ";
- logger.error("{}", error_msg, e);
- synchronized (IMFLUSHLOCK) {
+ logger.error("{}", errorMsg, e);
+ synchronized (imFlushLock) {
if (et.isActive()) {
et.rollback();
}
}
}
- return error_msg;
+ return errorMsg;
}
- public ArrayList<ForwardProgressEntity> getAllForwardProgressEntity() {
- if (logger.isDebugEnabled()) {
- logger.debug("getAllForwardProgressEntity: entry");
- }
+ public List<ForwardProgressEntity> getAllForwardProgressEntity() {
+ logger.debug("getAllForwardProgressEntity: entry");
ArrayList<ForwardProgressEntity> fpList = new ArrayList<>();
// Start a transaction
EntityTransaction et = em.getTransaction();
@@ -851,13 +786,10 @@ public class IntegrityMonitor {
@SuppressWarnings("rawtypes")
List myList = fquery.setLockMode(LockModeType.NONE)
.setFlushMode(FlushModeType.COMMIT).getResultList();
- synchronized (IMFLUSHLOCK) {
+ synchronized (imFlushLock) {
et.commit();
}
- if (logger.isDebugEnabled()) {
- logger.debug("getAllForwardProgressEntity: myList.size(): {}",
- myList.size());
- }
+ logger.debug("getAllForwardProgressEntity: myList.size(): {}", myList.size());
if (!myList.isEmpty()) {
for (int i = 0; i < myList.size(); i++) {
if (logger.isDebugEnabled()) {
@@ -869,7 +801,7 @@ public class IntegrityMonitor {
fpList.add((ForwardProgressEntity) myList.get(i));
}
}
- synchronized (IMFLUSHLOCK) {
+ synchronized (imFlushLock) {
if (et.isActive()) {
et.commit();
}
@@ -878,7 +810,7 @@ public class IntegrityMonitor {
// log an error and continue
String msg = "getAllForwardProgessEntity DB read failed with exception: ";
logger.error("{}", msg, e);
- synchronized (IMFLUSHLOCK) {
+ synchronized (imFlushLock) {
if (et.isActive()) {
et.rollback();
}
@@ -888,13 +820,9 @@ public class IntegrityMonitor {
}
private String jmxCheck(String dep) {
- if (logger.isDebugEnabled()) {
- logger.debug(
- "checking health of dependent by calling test() via JMX on resource: {}",
- dep);
- }
+ logger.debug("checking health of dependent by calling test() via JMX on resource: {}", dep);
- String error_msg = null;
+ String errorMsg = null;
// get the JMX URL from the database
String jmxUrl = null;
@@ -924,19 +852,19 @@ public class IntegrityMonitor {
dep, jmxUrl, rrx.getCreatedDate());
}
} else {
- error_msg = dep
+ errorMsg = dep
+ ": resource not found in ResourceRegistrationEntity table in the DB";
- logger.error("{}", error_msg);
+ logger.error("{}", errorMsg);
}
- synchronized (IMFLUSHLOCK) {
+ synchronized (imFlushLock) {
et.commit();
}
} catch (Exception e) {
- error_msg = dep
+ errorMsg = dep
+ ": ResourceRegistrationEntity DB read failed with exception: ";
- logger.error("{}", error_msg, e);
- synchronized (IMFLUSHLOCK) {
+ logger.error("{}", errorMsg, e);
+ synchronized (imFlushLock) {
if (et.isActive()) {
et.rollback();
}
@@ -955,14 +883,11 @@ public class IntegrityMonitor {
// invoke the test method via the jmx proxy
admin.test();
- if (logger.isDebugEnabled()) {
- logger.debug("Dependent resource {} sanity test passed",
- dep);
- }
+ logger.debug("Dependent resource {} sanity test passed", dep);
} catch (Exception e) {
- error_msg = dep
+ errorMsg = dep
+ ": resource sanity test failed with exception: ";
- logger.error("{}", error_msg, e);
+ logger.error("{}", errorMsg, e);
} finally {
// close the JMX connector
if (jmxAgentConnection != null) {
@@ -971,17 +896,15 @@ public class IntegrityMonitor {
}
}
- return error_msg;
+ return errorMsg;
}
public String dependencyCheck() {
- if (logger.isDebugEnabled()) {
- logger.debug("dependencyCheck: entry");
- }
+ logger.debug("dependencyCheck: entry");
synchronized (dependencyCheckLock) {
// Start with the error message empty
- String error_msg = "";
+ String errorMsg = "";
boolean dependencyFailure = false;
/*
@@ -1002,18 +925,18 @@ public class IntegrityMonitor {
resourceName, e.getMessage());
}
// Capture the subsystemTest failure info
- if (!error_msg.isEmpty()) {
- error_msg = error_msg.concat(",");
+ if (!errorMsg.isEmpty()) {
+ errorMsg = errorMsg.concat(",");
}
- error_msg = error_msg.concat(resourceName + ": "
+ errorMsg = errorMsg.concat(resourceName + ": "
+ e.getMessage());
this.stateManager.disableDependency();
} catch (Exception ex) {
logger.error("IntegrityMonitor threw exception.", ex);
- if (!error_msg.isEmpty()) {
- error_msg = error_msg.concat(",");
+ if (!errorMsg.isEmpty()) {
+ errorMsg = errorMsg.concat(",");
}
- error_msg = error_msg
+ errorMsg = errorMsg
.concat("\n"
+ resourceName
+ ": Failed to disable dependency after subsystemTest failure due to: "
@@ -1022,9 +945,9 @@ public class IntegrityMonitor {
}
// Check the sanity of dependents for lead subcomponents
- if (dep_groups != null && dep_groups.length > 0) {
+ if (depGroups != null && depGroups.length > 0) {
// check state of resources in dependency groups
- for (String group : dep_groups) {
+ for (String group : depGroups) {
group = group.trim();
if (group.isEmpty()) {
// ignore empty group
@@ -1035,45 +958,43 @@ public class IntegrityMonitor {
logger.debug("group dependencies = {}",
Arrays.toString(dependencies));
}
- int real_dep_count = 0;
- int fail_dep_count = 0;
+ int realDepCount = 0;
+ int failDepCount = 0;
for (String dep : dependencies) {
dep = dep.trim();
if (dep.isEmpty()) {
// ignore empty dependency
continue;
}
- real_dep_count++; // this is a valid dependency whose
+ realDepCount++; // this is a valid dependency whose
// state is tracked
- String fail_msg = fpCheck(dep); // if a resource is
+ String failMsg = fpCheck(dep); // if a resource is
// down, its FP count
// will not be
// incremented
- if (fail_msg == null) {
+ if (failMsg == null) {
if (testViaJmx) {
- fail_msg = jmxCheck(dep);
+ failMsg = jmxCheck(dep);
} else {
- fail_msg = stateCheck(dep);
+ failMsg = stateCheck(dep);
}
}
- if (fail_msg != null) {
- fail_dep_count++;
- if (!error_msg.isEmpty()) {
- error_msg = error_msg.concat(", ");
+ if (failMsg != null) {
+ failDepCount++;
+ if (!errorMsg.isEmpty()) {
+ errorMsg = errorMsg.concat(", ");
}
- error_msg = error_msg.concat(fail_msg);
+ errorMsg = errorMsg.concat(failMsg);
}
}// end for (String dep : dependencies)
// if all dependencies in a group are failed, set this
// resource's state to disable dependency
- if ((real_dep_count > 0)
- && (fail_dep_count == real_dep_count)) {
+ if ((realDepCount > 0)
+ && (failDepCount == realDepCount)) {
dependencyFailure = true;
try {
- if(logger.isDebugEnabled()){
- logger.debug("All dependents in group {} have failed their health check. Updating this resource's state to disableDependency", group);
- }
+ logger.debug("All dependents in group {} have failed their health check. Updating this resource's state to disableDependency", group);
if(stateManager.getAvailStatus()== null || !( (stateManager.getAvailStatus()).equals(StateManagement.DEPENDENCY) ||
(stateManager.getAvailStatus()).equals(StateManagement.DEPENDENCY_FAILED) ) ){
// Note: redundant calls are made by refreshStateAudit
@@ -1081,10 +1002,10 @@ public class IntegrityMonitor {
}
} catch (Exception e) {
logger.error("IntegrityMonitor threw exception.", e);
- if (!error_msg.isEmpty()) {
- error_msg = error_msg.concat(",");
+ if (!errorMsg.isEmpty()) {
+ errorMsg = errorMsg.concat(",");
}
- error_msg = error_msg.concat(resourceName
+ errorMsg = errorMsg.concat(resourceName
+ ": Failed to disable dependency");
break; // break out on failure and skip checking
// other groups
@@ -1092,7 +1013,7 @@ public class IntegrityMonitor {
}
// check the next group
- }// end for (String group : dep_groups)
+ }// end for (String group : depGroups)
/*
* We have checked all the dependency groups. If all are ok and
@@ -1100,9 +1021,7 @@ public class IntegrityMonitor {
*/
if (!dependencyFailure) {
try {
- if (logger.isDebugEnabled()) {
- logger.debug("All dependency groups have at least one viable member. Updating this resource's state to enableNoDependency");
- }
+ logger.debug("All dependency groups have at least one viable member. Updating this resource's state to enableNoDependency");
if(stateManager.getAvailStatus() != null && ((stateManager.getAvailStatus()).equals(StateManagement.DEPENDENCY) ||
(stateManager.getAvailStatus()).equals(StateManagement.DEPENDENCY_FAILED)) ){
// Note: redundant calls are made by refreshStateAudit
@@ -1110,10 +1029,10 @@ public class IntegrityMonitor {
} // The refreshStateAudit will catch the case where it is disabled but availStatus != failed
} catch (Exception e) {
logger.error("IntegrityMonitor threw exception.", e);
- if (!error_msg.isEmpty()) {
- error_msg = error_msg.concat(",");
+ if (!errorMsg.isEmpty()) {
+ errorMsg = errorMsg.concat(",");
}
- error_msg = error_msg.concat(resourceName
+ errorMsg = errorMsg.concat(resourceName
+ ": Failed to enable no dependency");
}
}
@@ -1126,9 +1045,7 @@ public class IntegrityMonitor {
* production environment...but you never know.
*/
try {
- if (logger.isDebugEnabled()) {
- logger.debug("There are no dependents. Updating this resource's state to enableNoDependency");
- }
+ logger.debug("There are no dependents. Updating this resource's state to enableNoDependency");
if(stateManager.getAvailStatus() != null && ((stateManager.getAvailStatus()).equals(StateManagement.DEPENDENCY) ||
(stateManager.getAvailStatus()).equals(StateManagement.DEPENDENCY_FAILED)) ){
// Note: redundant calls are made by refreshStateAudit
@@ -1137,27 +1054,25 @@ public class IntegrityMonitor {
// disabled but availStatus != failed
} catch (Exception e) {
logger.error("IntegrityMonitor threw exception.", e);
- if (!error_msg.isEmpty()) {
- error_msg = error_msg.concat(",");
+ if (!errorMsg.isEmpty()) {
+ errorMsg = errorMsg.concat(",");
}
- error_msg = error_msg.concat(resourceName
+ errorMsg = errorMsg.concat(resourceName
+ ": Failed to enable no dependency");
}
}
- if (!error_msg.isEmpty()) {
+ if (!errorMsg.isEmpty()) {
logger.error(
"Sanity failure detected in a dependent resource: {}",
- error_msg);
+ errorMsg);
}
- dependencyCheckErrorMsg = error_msg;
+ dependencyCheckErrorMsg = errorMsg;
lastDependencyCheckTime = System.currentTimeMillis();
- if (logger.isDebugEnabled()) {
- logger.debug("dependencyCheck: exit");
- }
- return error_msg;
+ logger.debug("dependencyCheck: exit");
+ return errorMsg;
}
}
@@ -1169,9 +1084,7 @@ public class IntegrityMonitor {
*/
public void testTransaction() {
synchronized (testTransactionLock){
- if(logger.isDebugEnabled()){
- logger.debug("testTransaction: entry");
- }
+ logger.debug("testTransaction: entry");
//
// startTransaction() not required for testTransaction
//
@@ -1188,9 +1101,7 @@ public class IntegrityMonitor {
*/
public void subsystemTest() throws IntegrityMonitorException {
// Testing provided by subsystem
- if (logger.isDebugEnabled()) {
- logger.debug("IntegrityMonitor subsystemTest() OK");
- }
+ logger.debug("IntegrityMonitor subsystemTest() OK");
}
/**
@@ -1306,7 +1217,7 @@ public class IntegrityMonitor {
fpx.setFpcCount(fpCounter);
em.persist(fpx);
// flush to the DB and commit
- synchronized (IMFLUSHLOCK) {
+ synchronized (imFlushLock) {
et.commit();
}
} else {
@@ -1317,7 +1228,7 @@ public class IntegrityMonitor {
}
} catch (Exception e) {
try {
- synchronized (IMFLUSHLOCK) {
+ synchronized (imFlushLock) {
if (et.isActive()) {
et.rollback();
}
@@ -1433,12 +1344,12 @@ public class IntegrityMonitor {
// site_1.pdp_2
if (prop.getProperty(IntegrityMonitorProperties.DEPENDENCY_GROUPS) != null) {
try {
- dep_groups = prop.getProperty(
+ depGroups = prop.getProperty(
IntegrityMonitorProperties.DEPENDENCY_GROUPS)
.split(";");
if (logger.isDebugEnabled()) {
logger.debug("dependency groups property = {}",
- Arrays.toString(dep_groups));
+ Arrays.toString(depGroups));
}
} catch (Exception e) {
logger.warn("Ignored invalid property: {}",
@@ -1446,29 +1357,29 @@ public class IntegrityMonitor {
}
}
- site_name = prop.getProperty(IntegrityMonitorProperties.SITE_NAME);
- if (site_name == null) {
+ siteName = prop.getProperty(IntegrityMonitorProperties.SITE_NAME);
+ if (siteName == null) {
String msg = IntegrityMonitorProperties.SITE_NAME
+ " property is null";
logger.error("{}", msg);
throw new IntegrityMonitorPropertiesException(
"IntegrityMonitor Property Exception: " + msg);
} else {
- site_name = site_name.trim();
+ siteName = siteName.trim();
}
- node_type = prop.getProperty(IntegrityMonitorProperties.NODE_TYPE);
- if (node_type == null) {
+ nodeType = prop.getProperty(IntegrityMonitorProperties.NODE_TYPE);
+ if (nodeType == null) {
String msg = IntegrityMonitorProperties.NODE_TYPE
+ " property is null";
logger.error("{}", msg);
throw new IntegrityMonitorPropertiesException(
"IntegrityMonitor Property Exception: " + msg);
} else {
- node_type = node_type.trim();
- if (!isNodeTypeEnum(node_type)) {
+ nodeType = nodeType.trim();
+ if (!isNodeTypeEnum(nodeType)) {
String msg = IntegrityMonitorProperties.NODE_TYPE
- + " property " + node_type + " is invalid";
+ + " property " + nodeType + " is invalid";
logger.error("{}", msg);
throw new IntegrityMonitorPropertiesException(
"IntegrityMonitor Property Exception: " + msg);
@@ -1476,9 +1387,9 @@ public class IntegrityMonitor {
}
if (prop.getProperty(IntegrityMonitorProperties.TEST_VIA_JMX) != null) {
- String jmx_test = prop.getProperty(
+ String jmxTest = prop.getProperty(
IntegrityMonitorProperties.TEST_VIA_JMX).trim();
- testViaJmx = Boolean.parseBoolean(jmx_test);
+ testViaJmx = Boolean.parseBoolean(jmxTest);
}
if (prop.getProperty(IntegrityMonitorProperties.JMX_FQDN) != null) {
@@ -1523,11 +1434,9 @@ public class IntegrityMonitor {
e);
}
}
-
- if(logger.isDebugEnabled()){
- logger.debug("IntegrityMonitor.validateProperties(): Property values \n"
- + "maxFpcUpdateInterval = {}\n", maxFpcUpdateInterval);
- }
+
+ logger.debug("IntegrityMonitor.validateProperties(): Property values \n"
+ + "maxFpcUpdateInterval = {}\n", maxFpcUpdateInterval);
return;
}
@@ -1540,15 +1449,14 @@ public class IntegrityMonitor {
logger.error("IntegrityMonitor threw exception.", e);
}
} else {
- if (logger.isDebugEnabled()) {
- logger.debug("Update integrity monitor properties not allowed");
- }
+ logger.debug("Update integrity monitor properties not allowed");
}
}
private static boolean isNodeTypeEnum(String nodeType) {
+ String upper = nodeType.toUpperCase();
for (NodeType n : NodeType.values()) {
- if (n.toString().equals(nodeType)) {
+ if (n.toString().equals(upper)) {
return true;
}
}
@@ -1561,15 +1469,11 @@ public class IntegrityMonitor {
* set. The state is restored when forward progress continues.
*/
private void fpMonitorCycle() {
- if(logger.isDebugEnabled()){
- logger.debug("fpMonitorCycle(): entry");
- }
+ logger.debug("fpMonitorCycle(): entry");
synchronized (fpMonitorCycleLock) {
// monitoring interval checks
if (monitorInterval <= 0) {
- if(logger.isDebugEnabled()){
- logger.debug("fpMonitorCycle(): disabled");
- }
+ logger.debug("fpMonitorCycle(): disabled");
elapsedTime = 0;
return; // monitoring is disabled
}
@@ -1587,11 +1491,9 @@ public class IntegrityMonitor {
// no forward progress
missedCycles += 1;
if (missedCycles >= failedCounterThreshold && !alarmExists) {
- if (logger.isDebugEnabled()) {
- logger.debug(
- "Forward progress not detected for resource {}. Setting state to disable failed.",
- resourceName);
- }
+ logger.debug(
+ "Forward progress not detected for resource {}. Setting state to disable failed.",
+ resourceName);
if (!(stateManager.getOpState())
.equals(StateManagement.DISABLED)) {
// Note: The refreshStateAudit will make redundant
@@ -1607,11 +1509,9 @@ public class IntegrityMonitor {
lastFpCounter = fpCounter;
missedCycles = 0;
// set op state to enabled
- if (logger.isDebugEnabled()) {
- logger.debug(
- "Forward progress detected for resource {}. Setting state to enable not failed.",
- resourceName);
- }
+ logger.debug(
+ "Forward progress detected for resource {}. Setting state to enable not failed.",
+ resourceName);
if (!(stateManager.getOpState())
.equals(StateManagement.ENABLED)) {
// Note: The refreshStateAudit will make redundant calls
@@ -1625,9 +1525,7 @@ public class IntegrityMonitor {
logger.error("FP Monitor encountered error. ", e);
}
}
- if(logger.isDebugEnabled()){
- logger.debug("fpMonitorCycle(): exit");
- }
+ logger.debug("fpMonitorCycle(): exit");
}
/**
@@ -1636,35 +1534,25 @@ public class IntegrityMonitor {
* then disable them.
*/
private void stateAudit() {
- if(logger.isDebugEnabled()){
- logger.debug("IntegrityMonitor.stateAudit(): entry");
- }
+ logger.debug("IntegrityMonitor.stateAudit(): entry");
if (stateAuditIntervalMs <= 0) {
- if(logger.isDebugEnabled()){
- logger.debug("IntegrityMonitor.stateAudit(): disabled");
- }
+ logger.debug("IntegrityMonitor.stateAudit(): disabled");
return; // stateAudit is disabled
}
//Only run from nodes that are operational
if(stateManager.getOpState().equals(StateManagement.DISABLED)){
- if(logger.isDebugEnabled()){
- logger.debug("IntegrityMonitor.stateAudit(): DISABLED. returning");
- }
+ logger.debug("IntegrityMonitor.stateAudit(): DISABLED. returning");
return;
}
if(stateManager.getAdminState().equals(StateManagement.LOCKED)){
- if(logger.isDebugEnabled()){
- logger.debug("IntegrityMonitor.stateAudit(): LOCKED. returning");
- }
+ logger.debug("IntegrityMonitor.stateAudit(): LOCKED. returning");
return;
}
if(!stateManager.getStandbyStatus().equals(StateManagement.NULL_VALUE) &&
stateManager.getStandbyStatus()!= null){
if(!stateManager.getStandbyStatus().equals(StateManagement.PROVIDING_SERVICE)){
- if(logger.isDebugEnabled()){
- logger.debug("IntegrityMonitor.stateAudit(): NOT PROVIDING_SERVICE. returning");
- }
+ logger.debug("IntegrityMonitor.stateAudit(): NOT PROVIDING_SERVICE. returning");
return;
}
}
@@ -1672,29 +1560,23 @@ public class IntegrityMonitor {
Date date = new Date();
long timeSinceLastStateAudit = date.getTime() - lastStateAuditTime.getTime();
if (timeSinceLastStateAudit < stateAuditIntervalMs){
- if(logger.isDebugEnabled()){
- logger.debug("IntegrityMonitor.stateAudit(): Not time to run. returning");
- }
+ logger.debug("IntegrityMonitor.stateAudit(): Not time to run. returning");
return;
}
executeStateAudit();
lastStateAuditTime = date;
-
- if(logger.isDebugEnabled()){
- logger.debug("IntegrityMonitor.stateAudit(): exit");
- }
+
+ logger.debug("IntegrityMonitor.stateAudit(): exit");
}// end stateAudit()
public void executeStateAudit(){
- if(logger.isDebugEnabled()){
- logger.debug("IntegrityMonitor.executeStateAudit(): entry");
- }
+ logger.debug("IntegrityMonitor.executeStateAudit(): entry");
Date date = new Date();
// Get all entries in the forwardprogressentity table
- ArrayList<ForwardProgressEntity> fpList = getAllForwardProgressEntity();
+ List<ForwardProgressEntity> fpList = getAllForwardProgressEntity();
// Check if each forwardprogressentity entry is current
for(ForwardProgressEntity fpe : fpList){
@@ -1718,9 +1600,7 @@ public class IntegrityMonitor {
if(diffMs > staleMs){
//ForwardProgress is stale. Disable it
// Start a transaction
- if(logger.isDebugEnabled()){
- logger.debug("IntegrityMonitor.executeStateAudit(): resource = {}, FPC is stale. Disabling it" );
- }
+ logger.debug("IntegrityMonitor.executeStateAudit(): resource = {}, FPC is stale. Disabling it" );
EntityTransaction et = em.getTransaction();
et.begin();
StateManagementEntity sme = null;
@@ -1744,13 +1624,13 @@ public class IntegrityMonitor {
String msg = "IntegrityMonitor.executeStateAudit(): " + fpe.getResourceName() + ": resource not found in state management entity database table";
logger.error("{}", msg);
}
- synchronized(IMFLUSHLOCK){
+ synchronized(imFlushLock){
et.commit();
}
} catch (Exception e) {
// log an error
logger.error("IntegrityMonitor.executeStateAudit(): {}: StateManagementEntity DB read failed with exception: ", fpe.getResourceName(), e);
- synchronized(IMFLUSHLOCK){
+ synchronized(imFlushLock){
if(et.isActive()){
et.rollback();
}
@@ -1770,25 +1650,19 @@ public class IntegrityMonitor {
}
}// end if(diffMs > staleMs)
}// end for(ForwardProgressEntity fpe : fpList)
- if(logger.isDebugEnabled()){
- logger.debug("IntegrityMonitor.executeStateAudit(): exit");
- }
+ logger.debug("IntegrityMonitor.executeStateAudit(): exit");
}
/**
* Execute a test transaction when test transaction interval has elapsed.
*/
private void checkTestTransaction() {
- if(logger.isDebugEnabled()){
- logger.debug("checkTestTransaction(): entry");
- }
+ logger.debug("checkTestTransaction(): entry");
synchronized (checkTestTransactionLock) {
// test transaction timer checks
if (testTransInterval <= 0) {
- if(logger.isDebugEnabled()){
- logger.debug("checkTestTransaction(): disabled");
- }
+ logger.debug("checkTestTransaction(): disabled");
elapsedTestTransTime = 0;
return; // test transaction is disabled
}
@@ -1804,25 +1678,19 @@ public class IntegrityMonitor {
// execute test transaction
testTransaction();
}
- if(logger.isDebugEnabled()){
- logger.debug("checkTestTransaction(): exit");
- }
+ logger.debug("checkTestTransaction(): exit");
}
/**
* Updates Fpc counter in database when write Fpc interval has elapsed.
*/
private void checkWriteFpc() {
- if(logger.isDebugEnabled()){
- logger.debug("checkWriteFpc(): entry");
- }
+ logger.debug("checkWriteFpc(): entry");
synchronized (checkWriteFpcLock) {
// test transaction timer checks
if (writeFpcInterval <= 0) {
- if(logger.isDebugEnabled()){
- logger.debug("checkWriteFpc(): disabled");
- }
+ logger.debug("checkWriteFpc(): disabled");
elapsedWriteFpcTime = 0;
return; // write Fpc is disabled
}
@@ -1842,9 +1710,7 @@ public class IntegrityMonitor {
logger.error("IntegrityMonitor threw exception.", e);
}
}
- if(logger.isDebugEnabled()){
- logger.debug("checkWriteFpc(): exit");
- }
+ logger.debug("checkWriteFpc(): exit");
}
/**
@@ -1852,30 +1718,22 @@ public class IntegrityMonitor {
* resource's state.
*/
private void checkDependentHealth() {
- if (logger.isDebugEnabled()) {
- logger.debug("checkDependentHealth: entry");
- }
+ logger.debug("checkDependentHealth: entry");
if (checkDependencyInterval <=0) {
- if (logger.isDebugEnabled()) {
- logger.debug("checkDependentHealth: disabled");
- }
+ logger.debug("checkDependentHealth: disabled");
return; // dependency monitoring is disabled
}
long currTime = System.currentTimeMillis();
- if (logger.isDebugEnabled()) {
- logger.debug(
- "checkDependentHealth currTime - lastDependencyCheckTime = {}",
- (currTime - lastDependencyCheckTime));
- }
- if ((currTime - lastDependencyCheckTime) > (1000 * checkDependencyInterval)) {
+ logger.debug(
+ "checkDependentHealth currTime - lastDependencyCheckTime = {}",
+ currTime - lastDependencyCheckTime);
+ if ((currTime - lastDependencyCheckTime) > (1000L * checkDependencyInterval)) {
// execute dependency check and update this resource's state
dependencyCheck();
}
- if (logger.isDebugEnabled()) {
- logger.debug("checkDependentHealth: exit");
- }
+ logger.debug("checkDependentHealth: exit");
}
/*
@@ -1889,49 +1747,32 @@ public class IntegrityMonitor {
* of the state and send a notification to all registered observers.
*/
private void refreshStateAudit() {
- if(logger.isDebugEnabled()){
- logger.debug("refreshStateAudit(): entry");
- }
+ logger.debug("refreshStateAudit(): entry");
if (refreshStateAuditIntervalMs <= 0) {
// The audit is disabled
- if(logger.isDebugEnabled()){
- logger.debug("refreshStateAudit(): disabled");
- }
+ logger.debug("refreshStateAudit(): disabled");
return;
}
executeRefreshStateAudit();
- if(logger.isDebugEnabled()){
- logger.debug("refreshStateAudit(): exit");
- }
+ logger.debug("refreshStateAudit(): exit");
}
public void executeRefreshStateAudit(){
- if(logger.isDebugEnabled()){
- logger.debug("executeRefreshStateAudit(): entry");
- }
+ logger.debug("executeRefreshStateAudit(): entry");
synchronized (refreshStateAuditLock) {
- if (logger.isDebugEnabled()) {
- logger.debug("refreshStateAudit: entry");
- }
+ logger.debug("refreshStateAudit: entry");
Date now = new Date();
long nowMs = now.getTime();
long lastTimeMs = refreshStateAuditLastRunDate.getTime();
- if (logger.isDebugEnabled()) {
- logger.debug("refreshStateAudit: ms since last run = {}",
- (nowMs - lastTimeMs));
- }
+ logger.debug("refreshStateAudit: ms since last run = {}",
+ nowMs - lastTimeMs);
if ((nowMs - lastTimeMs) > refreshStateAuditIntervalMs) {
String adminState = stateManager.getAdminState();
- if (logger.isDebugEnabled()) {
- logger.debug("refreshStateAudit: adminState = {}",
- adminState);
- }
+ logger.debug("refreshStateAudit: adminState = {}", adminState);
if (adminState.equals(StateManagement.LOCKED)) {
try {
- if (logger.isDebugEnabled()) {
- logger.debug("refreshStateAudit: calling lock()");
- }
+ logger.debug("refreshStateAudit: calling lock()");
stateManager.lock();
} catch (Exception e) {
logger.error(
@@ -1940,11 +1781,8 @@ public class IntegrityMonitor {
}
} else {// unlocked
try {
- if (logger.isDebugEnabled()) {
- logger.debug("refreshStateAudit: calling unlock()");
- }
+ logger.debug("refreshStateAudit: calling unlock()");
stateManager.unlock();
- ;
} catch (Exception e) {
logger.error(
"refreshStateAudit: caught unexpected exception from stateManager.unlock(): ",
@@ -1952,14 +1790,10 @@ public class IntegrityMonitor {
}
}
refreshStateAuditLastRunDate = new Date();
- if (logger.isDebugEnabled()) {
- logger.debug("refreshStateAudit: exit");
- }
+ logger.debug("refreshStateAudit: exit");
}
}
- if(logger.isDebugEnabled()){
- logger.debug("executeRefreshStateAudit(): exit");
- }
+ logger.debug("executeRefreshStateAudit(): exit");
}
public static boolean isUnitTesting() {
@@ -1988,55 +1822,39 @@ public class IntegrityMonitor {
@Override
public void run() {
- if (logger.isDebugEnabled()) {
- logger.debug("FPManager thread running");
- }
+ logger.debug("FPManager thread running");
while (!exit) {
try {
Thread.sleep(CYCLE_INTERVAL_MILLIS);
} catch (InterruptedException e) {
// The 'sleep' call was interrupted
- if (logger.isDebugEnabled()) {
- logger.debug("IntegrityMonitor threw exception.", e);
- }
+ logger.debug("IntegrityMonitor threw exception.", e);
Thread.currentThread().interrupt();
continue;
}
try {
- if (logger.isDebugEnabled()) {
- logger.debug("FPManager calling fpMonitorCycle()");
- }
+ logger.debug("FPManager calling fpMonitorCycle()");
// check forward progress timer
IntegrityMonitor.this.fpMonitorCycle();
- if (logger.isDebugEnabled()) {
- logger.debug("FPManager calling checkTestTransaction()");
- }
+ logger.debug("FPManager calling checkTestTransaction()");
// check test transaction timer
IntegrityMonitor.this.checkTestTransaction();
- if (logger.isDebugEnabled()) {
- logger.debug("FPManager calling checkWriteFpc()");
- }
+ logger.debug("FPManager calling checkWriteFpc()");
// check write Fpc timer
IntegrityMonitor.this.checkWriteFpc();
- if (logger.isDebugEnabled()) {
- logger.debug("FPManager calling checkDependentHealth()");
- }
+ logger.debug("FPManager calling checkDependentHealth()");
// check dependency health
IntegrityMonitor.this.checkDependentHealth();
- if (logger.isDebugEnabled()) {
- logger.debug("FPManager calling refreshStateAudit()");
- }
+ logger.debug("FPManager calling refreshStateAudit()");
// check if it is time to run the refreshStateAudit
IntegrityMonitor.this.refreshStateAudit();
- if (logger.isDebugEnabled()) {
- logger.debug("FPManager calling stateAudit()");
- }
+ logger.debug("FPManager calling stateAudit()");
// check if it is time to run the stateAudit
IntegrityMonitor.this.stateAudit();
@@ -2057,11 +1875,9 @@ public class IntegrityMonitor {
}
public void allSeemsWell(@NotNull String key, @NotNull Boolean asw, @NotNull String msg)
- throws IllegalArgumentException, AllSeemsWellException {
+ throws AllSeemsWellException {
- if(logger.isDebugEnabled()){
- logger.debug("allSeemsWell entry: key = {}, asw = {}, msg = {}", key, asw, msg);
- }
+ logger.debug("allSeemsWell entry: key = {}, asw = {}, msg = {}", key, asw, msg);
if(key == null || key.isEmpty()){
logger.error("allSeemsWell: 'key' has no visible content");
throw new IllegalArgumentException("allSeemsWell: 'key' has no visible content");
@@ -2125,11 +1941,11 @@ public class IntegrityMonitor {
}
if(logger.isDebugEnabled()){
- for(String mykey: allSeemsWellMap.keySet()){
- logger.debug("allSeemsWellMap: key = {} msg = {}", mykey, allSeemsWellMap.get(mykey));
+ for(Entry<String, String> ent: allSeemsWellMap.entrySet()) {
+ logger.debug("allSeemsWellMap: key = {} msg = {}", ent.getKey(), ent.getValue());
}
- for(String mykey: allNotWellMap.keySet()){
- logger.debug("allNotWellMap: key = {} msg = {}", mykey, allNotWellMap.get(mykey));
+ for(Entry<String, String> ent: allNotWellMap.entrySet()) {
+ logger.debug("allNotWellMap: key = {} msg = {}", ent.getKey(), ent.getValue());
}
logger.debug("allSeemsWell exit");
}
diff --git a/integrity-monitor/src/main/java/org/onap/policy/common/im/jmx/ComponentAdmin.java b/integrity-monitor/src/main/java/org/onap/policy/common/im/jmx/ComponentAdmin.java
index c9b1c1df..a18b1434 100644
--- a/integrity-monitor/src/main/java/org/onap/policy/common/im/jmx/ComponentAdmin.java
+++ b/integrity-monitor/src/main/java/org/onap/policy/common/im/jmx/ComponentAdmin.java
@@ -42,6 +42,8 @@ import org.onap.policy.common.im.StateManagement;
* Base class for component MBeans.
*/
public class ComponentAdmin implements ComponentAdminMBean {
+ private static final String STATE_MANAGER = "stateManager";
+
private static final Logger logger = LoggerFactory.getLogger(ComponentAdmin.class.getName());
private final String name;
@@ -55,12 +57,12 @@ public class ComponentAdmin implements ComponentAdminMBean {
* @param name the MBean name
* @param integrityMonitor
* @param stateManager
- * @throws Exception
+ * @throws ComponentAdminException
*/
- public ComponentAdmin(String name, IntegrityMonitor integrityMonitor, StateManagement stateManager) throws Exception {
+ public ComponentAdmin(String name, IntegrityMonitor integrityMonitor, StateManagement stateManager) throws ComponentAdminException {
if ((name == null) || (integrityMonitor == null) || (stateManager == null)) {
logger.error("Error: ComponentAdmin constructor called with invalid input");
- throw new NullPointerException("null input");
+ throw new ComponentAdminException("null input");
}
this.name = "ONAP_POLICY_COMP:name=" + name;
@@ -69,50 +71,41 @@ public class ComponentAdmin implements ComponentAdminMBean {
try {
register();
- } catch (Exception e) {
- if(logger.isDebugEnabled()){
- logger.debug("Failed to register ComponentAdmin MBean");
- }
+ } catch (ComponentAdminException e) {
+ logger.debug("Failed to register ComponentAdmin MBean");
throw e;
}
}
/**
* Registers with the MBean server.
- * @throws MalformedObjectNameException a JMX exception
- * @throws InstanceNotFoundException a JMX exception
- * @throws MBeanRegistrationException a JMX exception
- * @throws NotCompliantMBeanException a JMX exception
- * @throws InstanceAlreadyExistsException a JMX exception
+ * @throws ComponentAdminException a JMX exception
*/
- public synchronized void register() throws MalformedObjectNameException,
- MBeanRegistrationException, InstanceNotFoundException,
- InstanceAlreadyExistsException, NotCompliantMBeanException {
+ public synchronized void register() throws ComponentAdminException {
-
- if(logger.isDebugEnabled()){
+ try {
logger.debug("Registering {} MBean", name);
- }
-
- MBeanServer mbeanServer = findMBeanServer();
+ MBeanServer mbeanServer = findMBeanServer();
- if (mbeanServer == null) {
- return;
- }
+ if (mbeanServer == null) {
+ return;
+ }
- ObjectName objectName = new ObjectName(name);
+ ObjectName objectName = new ObjectName(name);
- if (mbeanServer.isRegistered(objectName)) {
- if(logger.isDebugEnabled()){
+ if (mbeanServer.isRegistered(objectName)) {
logger.debug("Unregistering a previously registered {} MBean", name);
+ mbeanServer.unregisterMBean(objectName);
}
- mbeanServer.unregisterMBean(objectName);
- }
- mbeanServer.registerMBean(this, objectName);
- registeredMBeanServer = mbeanServer;
- registeredObjectName = objectName;
+ mbeanServer.registerMBean(this, objectName);
+ registeredMBeanServer = mbeanServer;
+ registeredObjectName = objectName;
+
+ } catch (MalformedObjectNameException | MBeanRegistrationException | InstanceNotFoundException | InstanceAlreadyExistsException | NotCompliantMBeanException e) {
+ throw new ComponentAdminException(e);
+ }
}
/**
@@ -125,18 +118,22 @@ public class ComponentAdmin implements ComponentAdminMBean {
/**
* Unregisters with the MBean server.
- * @throws InstanceNotFoundException a JMX exception
- * @throws MBeanRegistrationException a JMX exception
+ * @throws ComponentAdminException a JMX exception
*/
- public synchronized void unregister() throws MBeanRegistrationException,
- InstanceNotFoundException {
+ public synchronized void unregister() throws ComponentAdminException {
if (registeredObjectName == null) {
return;
}
- registeredMBeanServer.unregisterMBean(registeredObjectName);
+ try {
+ registeredMBeanServer.unregisterMBean(registeredObjectName);
+
+ } catch (MBeanRegistrationException | InstanceNotFoundException e) {
+ throw new ComponentAdminException(e);
+ }
+
registeredMBeanServer = null;
registeredObjectName = null;
}
@@ -192,44 +189,38 @@ public class ComponentAdmin implements ComponentAdminMBean {
@Override
public void test() throws Exception {
// Call evaluateSanity on IntegrityMonitor to run the test
- if(logger.isDebugEnabled()){
- logger.debug("test() called...");
- }
+ logger.debug("test() called...");
if (integrityMonitor != null) {
integrityMonitor.evaluateSanity();
}
else {
logger.error("Unable to invoke test() - state manager instance is null");
- throw new NullPointerException("stateManager");
+ throw new ComponentAdminException(STATE_MANAGER);
}
}
@Override
public void lock() throws Exception {
- if(logger.isDebugEnabled()){
- logger.debug("lock() called...");
- }
+ logger.debug("lock() called...");
if (stateManager != null) {
stateManager.lock();
}
else {
logger.error("Unable to invoke lock() - state manager instance is null");
- throw new NullPointerException("stateManager");
+ throw new ComponentAdminException(STATE_MANAGER);
}
}
@Override
public void unlock() throws Exception {
- if(logger.isDebugEnabled()){
- logger.debug("unlock() called...");
- }
+ logger.debug("unlock() called...");
if (stateManager != null) {
stateManager.unlock();
}
else {
logger.error("Unable to invoke unlock() - state manager instance is null");
- throw new NullPointerException("stateManager");
+ throw new ComponentAdminException(STATE_MANAGER);
}
}
diff --git a/integrity-monitor/src/main/java/org/onap/policy/common/im/jmx/ComponentAdminException.java b/integrity-monitor/src/main/java/org/onap/policy/common/im/jmx/ComponentAdminException.java
new file mode 100644
index 00000000..e98288eb
--- /dev/null
+++ b/integrity-monitor/src/main/java/org/onap/policy/common/im/jmx/ComponentAdminException.java
@@ -0,0 +1,42 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Integrity Audit
+ * ================================================================================
+ * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.common.im.jmx;
+
+public class ComponentAdminException extends Exception {
+ private static final long serialVersionUID = 1L;
+
+ public ComponentAdminException() {
+ super();
+ }
+
+ public ComponentAdminException(String message) {
+ super(message);
+ }
+
+ public ComponentAdminException(Throwable cause) {
+ super(cause);
+ }
+
+ public ComponentAdminException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+}
diff --git a/integrity-monitor/src/test/java/org/onap/policy/common/im/test/IntegrityMonitorTest.java b/integrity-monitor/src/test/java/org/onap/policy/common/im/test/IntegrityMonitorTest.java
index 563c5d55..1efc90cc 100644
--- a/integrity-monitor/src/test/java/org/onap/policy/common/im/test/IntegrityMonitorTest.java
+++ b/integrity-monitor/src/test/java/org/onap/policy/common/im/test/IntegrityMonitorTest.java
@@ -20,9 +20,10 @@
package org.onap.policy.common.im.test;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
-import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
@@ -38,7 +39,6 @@ import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
-import org.junit.Ignore;
import org.junit.Test;
import org.onap.policy.common.im.IntegrityMonitor;
import org.onap.policy.common.im.IntegrityMonitorProperties;
@@ -883,7 +883,7 @@ public class IntegrityMonitorTest {
et.commit();
logger.debug("\nIntegrityMonitorTest:testGetAllForwardProgressEntity Calling im.getAllForwardProgressEntity()\n\n");
- ArrayList<ForwardProgressEntity> fpeList = im.getAllForwardProgressEntity();
+ List<ForwardProgressEntity> fpeList = im.getAllForwardProgressEntity();
assertTrue(fpeList.size()==4);
@@ -919,8 +919,6 @@ public class IntegrityMonitorTest {
IntegrityMonitor im = IntegrityMonitor.getInstance(resourceName, myProp);
- StateManagement sm = im.getStateManager();
-
logger.debug("\nIntegrityMonitorTest: Creating ForwardProgressEntity entries\n\n");
// Add resources to put an entry in the forward progress table
Date staleDate = new Date(0);
@@ -975,7 +973,7 @@ public class IntegrityMonitorTest {
et.commit();
logger.debug("\nIntegrityMonitorTest:testStateAudit Calling im.getAllForwardProgressEntity()\n\n");
- ArrayList<ForwardProgressEntity> fpeList = im.getAllForwardProgressEntity();
+ List<ForwardProgressEntity> fpeList = im.getAllForwardProgressEntity();
logger.debug("\n\n");
logger.debug("IntegrityMonitorTest:testStateAudit:ForwardProgressEntity entries");