Repository: nifi Updated Branches: refs/heads/master 44cc7e007 -> 2c907c63a
NIFI-2858: - getSystemLoadAverage of OperatingSystemMXBean sometimes returns a negative value. - ProcessorLoadAverage sets -1.0. It added a defensive logic. - When load average is zero(load average: 0.00, 0.02, 0.04), systemLoad is zero. - This closes #1091 Project: http://git-wip-us.apache.org/repos/asf/nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/2c907c63 Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/2c907c63 Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/2c907c63 Branch: refs/heads/master Commit: 2c907c63af921a9968bafd87903c93fe732c692f Parents: 44cc7e0 Author: Byunghwa Yun <comb...@combineads.co.kr> Authored: Tue Oct 4 15:24:42 2016 +0900 Committer: Matt Gilman <matt.c.gil...@gmail.com> Committed: Wed Oct 5 08:59:26 2016 -0400 ---------------------------------------------------------------------- .../java/org/apache/nifi/cluster/manager/StatusMerger.java | 9 ++++++++- .../apache/nifi/diagnostics/SystemDiagnosticsFactory.java | 4 +++- 2 files changed, 11 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/nifi/blob/2c907c63/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/manager/StatusMerger.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/manager/StatusMerger.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/manager/StatusMerger.java index 7ad9e84..38caba2 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/manager/StatusMerger.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/manager/StatusMerger.java @@ -573,7 +573,14 @@ public class StatusMerger { target.setFreeNonHeapBytes(target.getFreeNonHeapBytes() + toMerge.getFreeNonHeapBytes()); target.setMaxHeapBytes(target.getMaxHeapBytes() + toMerge.getMaxHeapBytes()); target.setMaxNonHeapBytes(target.getMaxNonHeapBytes() + toMerge.getMaxNonHeapBytes()); - target.setProcessorLoadAverage(target.getProcessorLoadAverage() + toMerge.getProcessorLoadAverage()); + double systemLoad = target.getProcessorLoadAverage(); + double toMergeSystemLoad = toMerge.getProcessorLoadAverage(); + if (systemLoad >= 0 && toMergeSystemLoad >= 0) { + systemLoad += toMergeSystemLoad; + } else if (systemLoad < 0 && toMergeSystemLoad >= 0) { + systemLoad = toMergeSystemLoad; + } + target.setProcessorLoadAverage(systemLoad); target.setTotalHeapBytes(target.getTotalHeapBytes() + toMerge.getTotalHeapBytes()); target.setTotalNonHeapBytes(target.getTotalNonHeapBytes() + toMerge.getTotalNonHeapBytes()); target.setTotalThreads(target.getTotalThreads() + toMerge.getTotalThreads()); http://git-wip-us.apache.org/repos/asf/nifi/blob/2c907c63/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/diagnostics/SystemDiagnosticsFactory.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/diagnostics/SystemDiagnosticsFactory.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/diagnostics/SystemDiagnosticsFactory.java index da3f603..24685e9 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/diagnostics/SystemDiagnosticsFactory.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/diagnostics/SystemDiagnosticsFactory.java @@ -67,8 +67,10 @@ public class SystemDiagnosticsFactory { systemDiagnostics.setAvailableProcessors(os.getAvailableProcessors()); final double systemLoad = os.getSystemLoadAverage(); - if (systemLoad > 0) { + if (systemLoad >= 0) { systemDiagnostics.setProcessorLoadAverage(systemLoad); + } else { + systemDiagnostics.setProcessorLoadAverage(-1.0); } // get the database disk usage