mirror of https://github.com/apache/lucene.git
SOLR-1242: Human readable JVM info from system handler does integer cutoff rounding, even when dealing with GB. Fixed to round to one decimal place.
git-svn-id: https://svn.apache.org/repos/asf/lucene/solr/trunk@788392 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
e7c97672d0
commit
613685ac6f
|
@ -422,6 +422,9 @@ Bug Fixes
|
||||||
|
|
||||||
49. SOLR-1207: equals method should compare this and other of DocList in DocSetBase (koji)
|
49. SOLR-1207: equals method should compare this and other of DocList in DocSetBase (koji)
|
||||||
|
|
||||||
|
50. SOLR-1242: Human readable JVM info from system handler does integer cutoff rounding, even when dealing
|
||||||
|
with GB. Fixed to round to one decimal place. (Jay Hill, Mark Miller)
|
||||||
|
|
||||||
|
|
||||||
Other Changes
|
Other Changes
|
||||||
----------------------
|
----------------------
|
||||||
|
|
|
@ -26,9 +26,9 @@ import java.lang.management.OperatingSystemMXBean;
|
||||||
import java.lang.management.RuntimeMXBean;
|
import java.lang.management.RuntimeMXBean;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
|
import java.text.DecimalFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
import org.apache.commons.io.FileUtils;
|
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.apache.lucene.LucenePackage;
|
import org.apache.lucene.LucenePackage;
|
||||||
import org.apache.solr.common.util.NamedList;
|
import org.apache.solr.common.util.NamedList;
|
||||||
|
@ -192,15 +192,16 @@ public class SystemInfoHandler extends RequestHandlerBase
|
||||||
jvm.add( "processors", runtime.availableProcessors() );
|
jvm.add( "processors", runtime.availableProcessors() );
|
||||||
|
|
||||||
long used = runtime.totalMemory() - runtime.freeMemory();
|
long used = runtime.totalMemory() - runtime.freeMemory();
|
||||||
int percentUsed = (int)(((double)(used)/(double)runtime.maxMemory())*100);
|
// not thread safe, but could be thread local
|
||||||
|
DecimalFormat df = new DecimalFormat("#.#");
|
||||||
|
double percentUsed = ((double)(used)/(double)runtime.maxMemory())*100;
|
||||||
|
|
||||||
SimpleOrderedMap<Object> mem = new SimpleOrderedMap<Object>();
|
SimpleOrderedMap<Object> mem = new SimpleOrderedMap<Object>();
|
||||||
mem.add( "free", FileUtils.byteCountToDisplaySize( runtime.freeMemory() ) );
|
mem.add("free", humanReadableUnits(runtime.freeMemory(), df));
|
||||||
mem.add( "total", FileUtils.byteCountToDisplaySize( runtime.totalMemory() ) );
|
mem.add("total", humanReadableUnits(runtime.totalMemory(), df));
|
||||||
mem.add( "max", FileUtils.byteCountToDisplaySize( runtime.maxMemory() ) );
|
mem.add("max", humanReadableUnits(runtime.maxMemory(), df));
|
||||||
mem.add( "used", FileUtils.byteCountToDisplaySize( used ) + " (%"+percentUsed+")");
|
mem.add("used", humanReadableUnits(used, df) + " (%" + df.format(percentUsed) + ")");
|
||||||
jvm.add( "memory", mem );
|
jvm.add("memory", mem);
|
||||||
|
|
||||||
// JMX properties -- probably should be moved to a different handler
|
// JMX properties -- probably should be moved to a different handler
|
||||||
SimpleOrderedMap<Object> jmx = new SimpleOrderedMap<Object>();
|
SimpleOrderedMap<Object> jmx = new SimpleOrderedMap<Object>();
|
||||||
|
@ -292,6 +293,30 @@ public class SystemInfoHandler extends RequestHandlerBase
|
||||||
public String getSource() {
|
public String getSource() {
|
||||||
return "$URL$";
|
return "$URL$";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final long ONE_KB = 1024;
|
||||||
|
private static final long ONE_MB = ONE_KB * ONE_KB;
|
||||||
|
private static final long ONE_GB = ONE_KB * ONE_MB;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return good default units based on byte size.
|
||||||
|
*/
|
||||||
|
private static String humanReadableUnits(long bytes, DecimalFormat df) {
|
||||||
|
String newSizeAndUnits;
|
||||||
|
|
||||||
|
if (bytes / ONE_GB > 0) {
|
||||||
|
newSizeAndUnits = String.valueOf(df.format((float)bytes / ONE_GB)) + " GB";
|
||||||
|
} else if (bytes / ONE_MB > 0) {
|
||||||
|
newSizeAndUnits = String.valueOf(df.format((float)bytes / ONE_MB)) + " MB";
|
||||||
|
} else if (bytes / ONE_KB > 0) {
|
||||||
|
newSizeAndUnits = String.valueOf(df.format((float)bytes / ONE_KB)) + " KB";
|
||||||
|
} else {
|
||||||
|
newSizeAndUnits = String.valueOf(bytes) + " bytes";
|
||||||
|
}
|
||||||
|
|
||||||
|
return newSizeAndUnits;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue