6651382: The Java JVM SNMP provider reports incorrect stats when asked for multiple OIDs
Summary: The JvmMemPoolEntryImpl must use the row index when caching data.
Reviewed-by: jfdenise
--- a/jdk/src/share/classes/sun/management/snmp/jvminstr/JvmMemPoolEntryImpl.java Mon Mar 03 10:32:38 2008 +0100
+++ b/jdk/src/share/classes/sun/management/snmp/jvminstr/JvmMemPoolEntryImpl.java Mon Mar 03 12:29:42 2008 +0100
@@ -26,7 +26,6 @@
// java imports
//
-import java.io.Serializable;
import java.util.Map;
// jmx imports
@@ -36,9 +35,7 @@
// jdmk imports
//
-import com.sun.jmx.snmp.agent.SnmpMib;
-import java.lang.management.ManagementFactory;
import java.lang.management.MemoryUsage;
import java.lang.management.MemoryType;
import java.lang.management.MemoryPoolMXBean;
@@ -73,7 +70,9 @@
"jvmMemPoolEntry.getCollectionUsage";
final static MemoryUsage ZEROS = new MemoryUsage(0,0,0,0);
-
+ final String entryMemoryTag;
+ final String entryPeakMemoryTag;
+ final String entryCollectMemoryTag;
MemoryUsage getMemoryUsage() {
try {
@@ -81,17 +80,17 @@
if (m != null) {
final MemoryUsage cached = (MemoryUsage)
- m.get(memoryTag);
+ m.get(entryMemoryTag);
if (cached != null) {
- log.debug("getMemoryUsage",
- "jvmMemPoolEntry.getUsage found in cache.");
+ log.debug("getMemoryUsage",entryMemoryTag+
+ " found in cache.");
return cached;
}
MemoryUsage u = pool.getUsage();
if (u == null) u = ZEROS;
- m.put(memoryTag,u);
+ m.put(entryMemoryTag,u);
return u;
}
// Should never come here.
@@ -113,18 +112,18 @@
if (m != null) {
final MemoryUsage cached = (MemoryUsage)
- m.get(peakMemoryTag);
+ m.get(entryPeakMemoryTag);
if (cached != null) {
if (log.isDebugOn())
log.debug("getPeakMemoryUsage",
- peakMemoryTag + " found in cache.");
+ entryPeakMemoryTag + " found in cache.");
return cached;
}
MemoryUsage u = pool.getPeakUsage();
if (u == null) u = ZEROS;
- m.put(peakMemoryTag,u);
+ m.put(entryPeakMemoryTag,u);
return u;
}
// Should never come here.
@@ -146,18 +145,18 @@
if (m != null) {
final MemoryUsage cached = (MemoryUsage)
- m.get(collectMemoryTag);
+ m.get(entryCollectMemoryTag);
if (cached != null) {
if (log.isDebugOn())
log.debug("getCollectMemoryUsage",
- collectMemoryTag + " found in cache.");
+ entryCollectMemoryTag + " found in cache.");
return cached;
}
MemoryUsage u = pool.getCollectionUsage();
if (u == null) u = ZEROS;
- m.put(collectMemoryTag,u);
+ m.put(entryCollectMemoryTag,u);
return u;
}
// Should never come here.
@@ -179,9 +178,12 @@
/**
* Constructor for the "JvmMemPoolEntry" group.
*/
- public JvmMemPoolEntryImpl(MemoryPoolMXBean mp, int index) {
+ public JvmMemPoolEntryImpl(MemoryPoolMXBean mp, final int index) {
this.pool=mp;
this.jvmMemPoolIndex = index;
+ this.entryMemoryTag = memoryTag + "." + index;
+ this.entryPeakMemoryTag = peakMemoryTag + "." + index;
+ this.entryCollectMemoryTag = collectMemoryTag + "." + index;
}
/**