modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/Ejb2BeanComponent.java | 17 +++++- modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ManagedComponentComponent.java | 28 ++++++---- modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/serviceBinding/ManagerComponent.java | 10 +-- 3 files changed, 40 insertions(+), 15 deletions(-)
New commits: commit 841e1f0adfabed848b9f841b1856e4abecf1620a Author: Ian Springer ian.springer@redhat.com Date: Mon Jun 25 12:17:46 2012 -0400
[BZ 835113] fix so EJB2 MDB Resources do not erroneously return an avail of DOWN (https://bugzilla.redhat.com/show_bug.cgi?id=835113)
diff --git a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/Ejb2BeanComponent.java b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/Ejb2BeanComponent.java index ebbf9bb..c4ae68f 100644 --- a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/Ejb2BeanComponent.java +++ b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/Ejb2BeanComponent.java @@ -1,6 +1,6 @@ /* * Jopr Management Platform - * Copyright (C) 2005-2009 Red Hat, Inc. + * Copyright (C) 2005-2012 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify @@ -27,7 +27,9 @@ import java.util.Set; import org.jboss.deployers.spi.management.ManagementView; import org.jboss.managed.api.ComponentType; import org.jboss.managed.api.ManagedComponent; +import org.jboss.managed.api.RunState;
+import org.rhq.core.domain.measurement.AvailabilityType; import org.rhq.plugins.jbossas5.util.Ejb2BeanUtils;
/** @@ -39,6 +41,19 @@ public class Ejb2BeanComponent extends AbstractEjbBeanComponent { private static final ComponentType MDB_COMPONENT_TYPE = new ComponentType("EJB", "MDB");
@Override + protected AvailabilityType getAvailabilityForRunState(RunState runState) { + AvailabilityType avail; + if (MDB_COMPONENT_TYPE.equals(getComponentType())) { + // This is a workaround for if BZ 835113. + avail = (runState == RunState.RUNNING || runState == RunState.UNKNOWN) ? + AvailabilityType.UP : AvailabilityType.DOWN; + } else { + avail = super.getAvailabilityForRunState(runState); + } + return avail; + } + + @Override protected ManagedComponent getManagedComponent() { if (MDB_COMPONENT_TYPE.equals(getComponentType())) { try { diff --git a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ManagedComponentComponent.java b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ManagedComponentComponent.java index 5d28473..a44cfc8 100644 --- a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ManagedComponentComponent.java +++ b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ManagedComponentComponent.java @@ -124,22 +124,32 @@ public class ManagedComponentComponent extends AbstractManagedComponent implemen // ResourceComponent Implementation --------------------------------------------
public AvailabilityType getAvailability() { - long timeSinceComponentRefresh = System.currentTimeMillis() - lastComponentRefresh; - if (timeSinceComponentRefresh > availRefreshInterval) { - if (log.isDebugEnabled()) { - log.debug("The availability refresh interval for [resourceKey: " - + getResourceContext().getResourceKey() + ", type: " + componentType + ", name: " + componentName - + "] has been exceeded by " + (timeSinceComponentRefresh - availRefreshInterval) - + " ms. Reloading managed component."); - } + if (lastComponentRefresh == 0) { + // The managed component has not been refreshed at all yet. getManagedComponent(); + } else { + long timeSinceComponentRefresh = System.currentTimeMillis() - lastComponentRefresh; + if (timeSinceComponentRefresh > availRefreshInterval) { + if (log.isDebugEnabled()) { + log.debug("The availability refresh interval for [resourceKey: " + + getResourceContext().getResourceKey() + ", type: " + componentType + ", name: " + componentName + + "] has been exceeded by " + (timeSinceComponentRefresh - availRefreshInterval) + + " ms. Reloading managed component..."); + } + getManagedComponent(); + } }
+ return getAvailabilityForRunState(runState); + } + + protected AvailabilityType getAvailabilityForRunState(RunState runState) { if (runState == RunState.RUNNING) { return AvailabilityType.UP; } else { if (log.isDebugEnabled()) { - log.debug(componentType + " component '" + componentName + "' was not running, state was : " + runState); + log.debug(componentType + " component '" + componentName + "' was not running - state was [" + runState + + "]."); } return AvailabilityType.DOWN; } diff --git a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/serviceBinding/ManagerComponent.java b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/serviceBinding/ManagerComponent.java index ba2a4c9..eae8b13 100644 --- a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/serviceBinding/ManagerComponent.java +++ b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/serviceBinding/ManagerComponent.java @@ -71,13 +71,13 @@ public class ManagerComponent extends ManagedComponentComponent implements Creat private static final String RESOURCE_KEY_SEPARATOR = "!)@(#*";
@Override - public AvailabilityType getAvailability() { - RunState runState = getManagedComponent().getRunState(); - return (runState == RunState.RUNNING || runState == RunState.UNKNOWN) ? AvailabilityType.UP - : AvailabilityType.DOWN; + protected AvailabilityType getAvailabilityForRunState(RunState runState) { + // This is a workaround for a bug where the binding manager MO will return a run state of UNKNOWN even when it's + // happily running. + return (runState == RunState.RUNNING || runState == RunState.UNKNOWN) ? + AvailabilityType.UP : AvailabilityType.DOWN; }
- // ConfigurationFacet -----------------------------
@Override