modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementManager.java
| 34 ++++++++--
1 file changed, 29 insertions(+), 5 deletions(-)
New commits:
commit 257e056801c29bc241b7c292008326be14faffb9
Author: Thomas SEGISMONT <tsegismo(a)redhat.com>
Date: Thu Nov 29 14:54:08 2012 +0100
[BZ-871873] Availability check change is not automatically picked up
Set availability schedule data if present in ResourceMeasurementScheduleRequest
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementManager.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementManager.java
index 3bb1f99..8e8c399 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementManager.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementManager.java
@@ -123,6 +123,7 @@ public class MeasurementManager extends AgentService implements
MeasurementAgent
super(MeasurementAgentService.class);
}
+ @Override
public void initialize() {
LOG.info("Initializing Measurement Manager...");
@@ -167,6 +168,7 @@ public class MeasurementManager extends AgentService implements
MeasurementAgent
}
class MeasurementCollectionRequester implements Runnable {
+ @Override
public void run() {
try {
while (!collectorThreadPool.isShutdown()) {
@@ -288,6 +290,7 @@ public class MeasurementManager extends AgentService implements
MeasurementAgent
}
}
+ @Override
public void shutdown() {
PluginContainer pluginContainer = PluginContainer.getInstance();
@@ -311,6 +314,7 @@ public class MeasurementManager extends AgentService implements
MeasurementAgent
}
}
+ @Override
public void setConfiguration(PluginContainerConfiguration configuration) {
this.configuration = configuration;
}
@@ -324,16 +328,22 @@ public class MeasurementManager extends AgentService implements
MeasurementAgent
*
* @param scheduleRequests
*/
+ @Override
public synchronized void
updateCollection(Set<ResourceMeasurementScheduleRequest> scheduleRequests) {
InventoryManager im = PluginContainer.getInstance().getInventoryManager();
for (ResourceMeasurementScheduleRequest resourceRequest : scheduleRequests) {
ResourceContainer resourceContainer =
im.getResourceContainer(resourceRequest.getResourceId());
if (resourceContainer != null) {
-
resourceContainer.updateMeasurementSchedule(resourceRequest.getMeasurementSchedules()); //
this is where we want to update rather than overwrite, right?
-
- //
resourceContainer.setMeasurementSchedule(resourceRequest.getMeasurementSchedules());
+ // Update (not overwrite) measurement schedule data ...
+
resourceContainer.updateMeasurementSchedule(resourceRequest.getMeasurementSchedules());
+ // ... and then reschedule collection
scheduleCollection(resourceRequest.getResourceId(),
resourceRequest.getMeasurementSchedules());
+ if (resourceRequest.getAvailabilitySchedule() != null) {
+ // Set availability schedule data if present
+ // This method also triggers a reschedule of availability check
+
resourceContainer.setAvailabilitySchedule(resourceRequest.getAvailabilitySchedule());
+ }
} else {
// This will happen when the server sends down schedules to an agent with
a cleaned inventory
// Its ok to skip these because the agent will request a reschedule once
its been able to synchronize
@@ -359,16 +369,20 @@ public class MeasurementManager extends AgentService implements
MeasurementAgent
*
* @param scheduleRequests
*/
+ @Override
public synchronized void
scheduleCollection(Set<ResourceMeasurementScheduleRequest> scheduleRequests) {
InventoryManager im = PluginContainer.getInstance().getInventoryManager();
for (ResourceMeasurementScheduleRequest resourceRequest : scheduleRequests) {
ResourceContainer resourceContainer =
im.getResourceContainer(resourceRequest.getResourceId());
if (resourceContainer != null) {
- //
resourceContainer.updateMeasurementSchedule(resourceRequest.getMeasurementSchedules());
// this is where we want to update rather than overwrite, right?
+ // Set measurement schedule data ...
resourceContainer.setMeasurementSchedule(resourceRequest.getMeasurementSchedules());
-
resourceContainer.setAvailabilitySchedule(resourceRequest.getAvailabilitySchedule());
+ // ... and then reschedule collection
scheduleCollection(resourceRequest.getResourceId(),
resourceRequest.getMeasurementSchedules());
+ // Set availability schedule data
+ // This method also triggers a reschedule of availability check
+
resourceContainer.setAvailabilitySchedule(resourceRequest.getAvailabilitySchedule());
} else {
// This will happen when the server sends down schedules to an agent with
a cleaned inventory
// It's ok to skip these because the agent will request a reschedule
once its been able to synchronize
@@ -415,6 +429,7 @@ public class MeasurementManager extends AgentService implements
MeasurementAgent
}
}
+ @Override
public synchronized void unscheduleCollection(Set<Integer> resourceIds) {
Iterator<ScheduledMeasurementInfo> itr =
this.scheduledRequests.iterator();
while (itr.hasNext()) {
@@ -442,6 +457,7 @@ public class MeasurementManager extends AgentService implements
MeasurementAgent
// spinder 12/16/11. BZ 760139. Modified to return empty sets instead of
'null' even for erroneous conditions.
// Server side logging or erroneous runtime conditions still occurs, but
callers to getRealTimeMeasurementValues
// won't have to additionally check for null values now. This is a safe
and better pattern.
+ @Override
public Set<MeasurementData> getRealTimeMeasurementValue(int resourceId,
Set<MeasurementScheduleRequest> requests) {
if (requests.size() == 0) {
// There's no need to even call getValues() on the ResourceComponent if
the list of metric names is empty.
@@ -498,6 +514,7 @@ public class MeasurementManager extends AgentService implements
MeasurementAgent
return values;
}
+ @Override
public long getNextExpectedCollectionTime() {
ScheduledMeasurementInfo nextScheduledMeasurement =
this.scheduledRequests.peek();
if (nextScheduledMeasurement == null) {
@@ -629,6 +646,7 @@ public class MeasurementManager extends AgentService implements
MeasurementAgent
return perMinuteValue;
}
+ @Override
public Map<String, Object> getMeasurementScheduleInfoForResource(int
resourceId) {
Map<String, Object> results = null;
@@ -692,10 +710,12 @@ public class MeasurementManager extends AgentService implements
MeasurementAgent
// -- MBean monitoring methods
+ @Override
public long getMeasurementsCollected() {
return this.collectedMeasurements.get();
}
+ @Override
public long getMeasurementsCollectedPerMinute() {
long now = System.currentTimeMillis();
@@ -718,14 +738,17 @@ public class MeasurementManager extends AgentService implements
MeasurementAgent
return ret;
}
+ @Override
public long getCurrentlyScheduleMeasurements() {
return this.scheduledRequests.size();
}
+ @Override
public long getTotalTimeCollectingMeasurements() {
return this.totalTimeCollecting.get();
}
+ @Override
public long getLateCollections() {
return lateCollections.get();
}
@@ -751,6 +774,7 @@ public class MeasurementManager extends AgentService implements
MeasurementAgent
this.failedCollection.addAndGet(count);
}
+ @Override
public long getFailedCollections() {
return failedCollection.get();
}
Show replies by date