From 0f51fa4e072aeb29f4e323cb6013fb4a873aae5c Mon Sep 17 00:00:00 2001 From: Jim Hahn Date: Wed, 31 Jan 2018 18:10:34 -0500 Subject: Fix sonar generic Exceptions in policy/common IntegrityMonitor.java: Renamed variables, Ex: dep_groups => depGroups. Renamed enum constants, Ex: pdp_xacml => PDP_XACML. Merged "if" tests. Cast values to "long" before multiplying. Re-throw interrupt(). Write exception via logger instead of e.printStackTrace(). Moved constructor to top of the file. Removed most logger.isDebugEnabled() checks. Returned generic List instead of ArrayList. Used entrySet() instead of keySet(). Removed useless parentheses. Removed superfluous exceptions from "throws" declaration. DbAudit.java: Modified DbAudit to throw DbAuditException. Replaced references to HashSet and HashMap with generic Set and Map. Modified DbAudit to iterate over entrySet() instead of keySet(). ComponentAdminException: Created ComponentAdminException class. Modified ComponentAdmin methods to throw new exception class. Extracted "stateManager" String constant. Eliminated logger.isDebugEnabled() calls. Updated the license data. Eliminated double-checked locking problem from PropertyUtil: Modified code to use Initialization On Demand Holder idiom. Change-Id: Ic01288542041da26df483ce85ecaf292ac138f85 Issue-ID: POLICY-246 Signed-off-by: Jim Hahn --- .../onap/policy/common/im/IntegrityMonitor.java | 780 ++++++++------------- .../onap/policy/common/im/jmx/ComponentAdmin.java | 87 ++- .../common/im/jmx/ComponentAdminException.java | 42 ++ .../common/im/test/IntegrityMonitorTest.java | 12 +- 4 files changed, 384 insertions(+), 537 deletions(-) create mode 100644 integrity-monitor/src/main/java/org/onap/policy/common/im/jmx/ComponentAdminException.java (limited to 'integrity-monitor') 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,100 +170,11 @@ 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 allSeemsWellMap; private Map 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 @@ -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 getAllForwardProgressEntity() { - if (logger.isDebugEnabled()) { - logger.debug("getAllForwardProgressEntity: entry"); - } + public List getAllForwardProgressEntity() { + logger.debug("getAllForwardProgressEntity: entry"); ArrayList 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 fpList = getAllForwardProgressEntity(); + List 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 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 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 fpeList = im.getAllForwardProgressEntity(); + List 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 fpeList = im.getAllForwardProgressEntity(); + List fpeList = im.getAllForwardProgressEntity(); logger.debug("\n\n"); logger.debug("IntegrityMonitorTest:testStateAudit:ForwardProgressEntity entries"); -- cgit 1.2.3-korg