diff --git a/micrometer-core/src/main/java/io/micrometer/core/instrument/logging/LoggingMeterRegistry.java b/micrometer-core/src/main/java/io/micrometer/core/instrument/logging/LoggingMeterRegistry.java index 8e3b5a85ad..8127731baf 100644 --- a/micrometer-core/src/main/java/io/micrometer/core/instrument/logging/LoggingMeterRegistry.java +++ b/micrometer-core/src/main/java/io/micrometer/core/instrument/logging/LoggingMeterRegistry.java @@ -217,7 +217,7 @@ String value(double value) { // see https://stackoverflow.com/a/3758880/510017 String humanReadableByteCount(double bytes) { int unit = 1024; - if (bytes < unit) return decimalOrNan(bytes) + " B"; + if (bytes < unit || Double.isNaN(bytes)) return decimalOrNan(bytes) + " B"; int exp = (int) (Math.log(bytes) / Math.log(unit)); String pre = "KMGTPE".charAt(exp - 1) + "i"; return decimalOrNan(bytes / Math.pow(unit, exp)) + " " + pre + "B"; diff --git a/micrometer-core/src/test/java/io/micrometer/core/instrument/logging/LoggingMeterRegistryTest.java b/micrometer-core/src/test/java/io/micrometer/core/instrument/logging/LoggingMeterRegistryTest.java index 1d42eb1cb2..7f65b77fe0 100644 --- a/micrometer-core/src/test/java/io/micrometer/core/instrument/logging/LoggingMeterRegistryTest.java +++ b/micrometer-core/src/test/java/io/micrometer/core/instrument/logging/LoggingMeterRegistryTest.java @@ -60,6 +60,7 @@ void humanReadableByteCount() { .baseUnit(BaseUnits.BYTES) .register(registry)); + assertThat(printer.humanReadableBaseUnit(Double.NaN)).isEqualTo("NaN B"); assertThat(printer.humanReadableBaseUnit(1.0)).isEqualTo("1 B"); assertThat(printer.humanReadableBaseUnit(1024)).isEqualTo("1 KiB"); assertThat(printer.humanReadableBaseUnit(1024 * 1024 * 2.5678976654)).isEqualTo("2.567898 MiB");