From afe4cb0c0d0fe2b9b620ba8d1b3413329eadbf40 Mon Sep 17 00:00:00 2001 From: wankai123 Date: Tue, 27 Apr 2021 15:13:24 +0800 Subject: [PATCH] fix: Some incompatibles check codes didn't work in `PercentileFunction combine` (#6851) --- CHANGES.md | 1 + .../analysis/meter/function/PercentileFunction.java | 10 +++++----- .../function/avg/AvgHistogramPercentileFunction.java | 11 ++++++----- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 57ce2ba9f..6dd534c8d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -25,6 +25,7 @@ Release Notes. * Loop alarm into event system. * Support alarm tags. * Support WeLink as a channel of alarm notification. +* Fix: Some defensive codes didn't work in `PercentileFunction combine`. #### UI * Add logo for kong plugin. diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/PercentileFunction.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/PercentileFunction.java index 093946b1a..061be7e31 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/PercentileFunction.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/PercentileFunction.java @@ -131,16 +131,16 @@ public abstract class PercentileFunction extends Metrics implements AcceptableVa ); return true; } - if (ranks.size() > 0) { + if (this.ranks.size() > 0) { IntList ranksOfThat = percentile.getRanks(); - if (this.ranks.size() != ranks.size()) { + if (this.ranks.size() != ranksOfThat.size()) { log.warn("Incompatible ranks size = [{}}] for current PercentileFunction[{}]", - ranks.size(), this.ranks.size() + ranksOfThat.size(), this.ranks.size() ); return true; } else { - if (!this.ranks.equals(percentile.getRanks())) { - log.warn("Rank {} doesn't exist in the previous ranks {}", percentile.getRanks(), ranks); + if (!this.ranks.equals(ranksOfThat)) { + log.warn("Rank {} doesn't exist in the previous ranks {}", ranksOfThat, this.ranks); return true; } } diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgHistogramPercentileFunction.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgHistogramPercentileFunction.java index f3659dbc0..fe879e676 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgHistogramPercentileFunction.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgHistogramPercentileFunction.java @@ -157,15 +157,16 @@ public abstract class AvgHistogramPercentileFunction extends Metrics implements public boolean combine(final Metrics metrics) { AvgHistogramPercentileFunction percentile = (AvgHistogramPercentileFunction) metrics; - if (ranks.size() > 0) { - if (this.ranks.size() != ranks.size()) { + if (this.ranks.size() > 0) { + IntList ranksOfThat = percentile.getRanks(); + if (this.ranks.size() != ranksOfThat.size()) { log.warn("Incompatible ranks size = [{}}] for current PercentileFunction[{}]", - ranks.size(), this.ranks.size() + ranksOfThat.size(), this.ranks.size() ); return true; } else { - if (!this.ranks.equals(percentile.getRanks())) { - log.warn("Rank {} doesn't exist in the previous ranks {}", percentile.getRanks(), ranks); + if (!this.ranks.equals(ranksOfThat)) { + log.warn("Rank {} doesn't exist in the previous ranks {}", ranksOfThat, this.ranks); return true; } }