diff --git a/CHANGES.md b/CHANGES.md index ebdcfcec1..e7fbef00d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -9,11 +9,12 @@ Release Notes. #### Java Agent * Remove invalid mysql configuration in agent.config. -* Add net.bytebuddy.agent.builder.AgentBuilder.RedefinitionStrategy.Listener to show detail message when redifine errors occur +* Add net.bytebuddy.agent.builder.AgentBuilder.RedefinitionStrategy.Listener to show detail message when redefine errors occur #### OAP-Backend * Allow user-defined `JAVA_OPTS` in the startup script. +* Metrics combination API supports abandoning results. #### UI diff --git a/oap-server/exporter/src/test/java/org/apache/skywalking/oap/server/exporter/provider/grpc/MockMetrics.java b/oap-server/exporter/src/test/java/org/apache/skywalking/oap/server/exporter/provider/grpc/MockMetrics.java index ccba7f304..98b8af2d4 100644 --- a/oap-server/exporter/src/test/java/org/apache/skywalking/oap/server/exporter/provider/grpc/MockMetrics.java +++ b/oap-server/exporter/src/test/java/org/apache/skywalking/oap/server/exporter/provider/grpc/MockMetrics.java @@ -29,8 +29,8 @@ public class MockMetrics extends Metrics { } @Override - public void combine(Metrics metrics) { - + public boolean combine(Metrics metrics) { + return true; } @Override diff --git a/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/RunningRuleTest.java b/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/RunningRuleTest.java index 42c5b00f5..fc5368d63 100644 --- a/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/RunningRuleTest.java +++ b/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/RunningRuleTest.java @@ -422,8 +422,8 @@ public class RunningRuleTest { } @Override - public void combine(Metrics metrics) { - + public boolean combine(Metrics metrics) { + return true; } @Override @@ -479,8 +479,8 @@ public class RunningRuleTest { } @Override - public void combine(Metrics metrics) { - + public boolean combine(Metrics metrics) { + return true; } @Override @@ -531,8 +531,8 @@ public class RunningRuleTest { } @Override - public void combine(Metrics metrics) { - + public boolean combine(Metrics metrics) { + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/data/MergableBufferedData.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/data/MergableBufferedData.java index 9413137a5..501135d19 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/data/MergableBufferedData.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/data/MergableBufferedData.java @@ -51,7 +51,10 @@ public class MergableBufferedData implements BufferedDa if (existed == null) { buffer.put(id, data); } else { - existed.combine(data); + final boolean isAbandoned = !existed.combine(data); + if (isAbandoned) { + buffer.remove(id); + } } } diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/endpoint/EndpointTraffic.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/endpoint/EndpointTraffic.java index ab41ff43e..7d810fabe 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/endpoint/EndpointTraffic.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/endpoint/EndpointTraffic.java @@ -108,8 +108,8 @@ public class EndpointTraffic extends Metrics { } @Override - public void combine(final Metrics metrics) { - + public boolean combine(final Metrics metrics) { + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/instance/InstanceTraffic.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/instance/InstanceTraffic.java index b7e6c6da0..414b7639c 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/instance/InstanceTraffic.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/instance/InstanceTraffic.java @@ -73,7 +73,7 @@ public class InstanceTraffic extends Metrics { private JsonObject properties; @Override - public void combine(final Metrics metrics) { + public boolean combine(final Metrics metrics) { final InstanceTraffic instanceTraffic = (InstanceTraffic) metrics; this.lastPingTimestamp = instanceTraffic.getLastPingTimestamp(); if (instanceTraffic.getProperties() != null && instanceTraffic.getProperties().size() > 0) { @@ -85,6 +85,7 @@ public class InstanceTraffic extends Metrics { if (this.getTimeBucket() > metrics.getTimeBucket()) { this.setTimeBucket(metrics.getTimeBucket()); } + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/networkalias/NetworkAddressAlias.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/networkalias/NetworkAddressAlias.java index a61c2ed9b..7c8db5d23 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/networkalias/NetworkAddressAlias.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/networkalias/NetworkAddressAlias.java @@ -67,7 +67,7 @@ public class NetworkAddressAlias extends Metrics { private long lastUpdateTimeBucket; @Override - public void combine(final Metrics metrics) { + public boolean combine(final Metrics metrics) { NetworkAddressAlias alias = (NetworkAddressAlias) metrics; this.representServiceId = alias.getRepresentServiceId(); this.representServiceInstanceId = alias.getRepresentServiceInstanceId(); @@ -78,6 +78,7 @@ public class NetworkAddressAlias extends Metrics { if (this.getTimeBucket() > metrics.getTimeBucket()) { this.setTimeBucket(metrics.getTimeBucket()); } + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/endpoint/EndpointRelationServerSideMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/endpoint/EndpointRelationServerSideMetrics.java index 4cebad587..3cf9c2de2 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/endpoint/EndpointRelationServerSideMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/endpoint/EndpointRelationServerSideMetrics.java @@ -69,8 +69,8 @@ public class EndpointRelationServerSideMetrics extends Metrics { } @Override - public void combine(Metrics metrics) { - + public boolean combine(Metrics metrics) { + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/instance/ServiceInstanceRelationClientSideMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/instance/ServiceInstanceRelationClientSideMetrics.java index 6e27883a3..009053fff 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/instance/ServiceInstanceRelationClientSideMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/instance/ServiceInstanceRelationClientSideMetrics.java @@ -77,8 +77,8 @@ public class ServiceInstanceRelationClientSideMetrics extends Metrics { } @Override - public void combine(Metrics metrics) { - + public boolean combine(Metrics metrics) { + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/instance/ServiceInstanceRelationServerSideMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/instance/ServiceInstanceRelationServerSideMetrics.java index 7cb879d4f..287857d54 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/instance/ServiceInstanceRelationServerSideMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/instance/ServiceInstanceRelationServerSideMetrics.java @@ -77,8 +77,8 @@ public class ServiceInstanceRelationServerSideMetrics extends Metrics { } @Override - public void combine(Metrics metrics) { - + public boolean combine(Metrics metrics) { + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/service/ServiceRelationClientSideMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/service/ServiceRelationClientSideMetrics.java index 544f32f2a..9da867b0b 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/service/ServiceRelationClientSideMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/service/ServiceRelationClientSideMetrics.java @@ -67,8 +67,8 @@ public class ServiceRelationClientSideMetrics extends Metrics { } @Override - public void combine(Metrics metrics) { - + public boolean combine(Metrics metrics) { + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/service/ServiceRelationServerSideMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/service/ServiceRelationServerSideMetrics.java index cfb60fa83..b25c3981e 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/service/ServiceRelationServerSideMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/service/ServiceRelationServerSideMetrics.java @@ -67,8 +67,8 @@ public class ServiceRelationServerSideMetrics extends Metrics { } @Override - public void combine(Metrics metrics) { - + public boolean combine(Metrics metrics) { + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceTraffic.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceTraffic.java index 0841f8e53..aef0095d8 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceTraffic.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceTraffic.java @@ -123,8 +123,8 @@ public class ServiceTraffic extends Metrics { } @Override - public void combine(final Metrics metrics) { - + public boolean combine(final Metrics metrics) { + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/HistogramFunction.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/HistogramFunction.java index ce23f279f..a76e81732 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/HistogramFunction.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/HistogramFunction.java @@ -75,16 +75,17 @@ public abstract class HistogramFunction extends Metrics implements AcceptableVal } @Override - public void combine(final Metrics metrics) { + public boolean combine(final Metrics metrics) { HistogramFunction histogram = (HistogramFunction) metrics; if (!dataset.keysEqual(histogram.getDataset())) { log.warn("Incompatible input [{}}] for current HistogramFunction[{}], entity {}", histogram, this, entityId ); - return; + return true; } this.dataset.append(histogram.dataset); + return true; } @Override 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 b7c81fd28..47b7f9f1b 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 @@ -122,14 +122,14 @@ public abstract class PercentileFunction extends Metrics implements AcceptableVa } @Override - public void combine(final Metrics metrics) { + public boolean combine(final Metrics metrics) { PercentileFunction percentile = (PercentileFunction) metrics; if (!dataset.keysEqual(percentile.getDataset())) { log.warn("Incompatible input [{}}] for current PercentileFunction[{}], entity {}", percentile, this, entityId ); - return; + return true; } if (ranks.size() > 0) { IntList ranksOfThat = percentile.getRanks(); @@ -137,11 +137,11 @@ public abstract class PercentileFunction extends Metrics implements AcceptableVa log.warn("Incompatible ranks size = [{}}] for current PercentileFunction[{}]", ranks.size(), this.ranks.size() ); - return; + return true; } else { if (!this.ranks.equals(percentile.getRanks())) { log.warn("Rank {} doesn't exist in the previous ranks {}", percentile.getRanks(), ranks); - return; + return true; } } } @@ -149,6 +149,7 @@ public abstract class PercentileFunction extends Metrics implements AcceptableVa this.dataset.append(percentile.dataset); this.isCalculated = false; + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgFunction.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgFunction.java index 4b41fe0d6..973c7338d 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgFunction.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgFunction.java @@ -80,9 +80,10 @@ public abstract class AvgFunction extends Metrics implements AcceptableValue 0) { @@ -162,11 +162,11 @@ public abstract class AvgHistogramPercentileFunction extends Metrics implements log.warn("Incompatible ranks size = [{}}] for current PercentileFunction[{}]", ranks.size(), this.ranks.size() ); - return; + return true; } else { if (!this.ranks.equals(percentile.getRanks())) { log.warn("Rank {} doesn't exist in the previous ranks {}", percentile.getRanks(), ranks); - return; + return true; } } } @@ -175,6 +175,7 @@ public abstract class AvgHistogramPercentileFunction extends Metrics implements this.count.append(percentile.count); this.isCalculated = false; + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgLabeledFunction.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgLabeledFunction.java index dfcfb911b..498e3da60 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgLabeledFunction.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgLabeledFunction.java @@ -72,10 +72,11 @@ public abstract class AvgLabeledFunction extends Metrics implements AcceptableVa private DataTable value = new DataTable(30); @Override - public final void combine(Metrics metrics) { + public final boolean combine(Metrics metrics) { AvgLabeledFunction longAvgMetrics = (AvgLabeledFunction) metrics; summation.append(longAvgMetrics.summation); count.append(longAvgMetrics.count); + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/latest/LatestFunction.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/latest/LatestFunction.java index 37a4ab6c0..f62e65fb6 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/latest/LatestFunction.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/latest/LatestFunction.java @@ -72,9 +72,10 @@ public abstract class LatestFunction extends Metrics implements AcceptableValue< this.value = value; } - @Override public final void combine(Metrics metrics) { + @Override public final boolean combine(Metrics metrics) { LatestFunction latestFunction = (LatestFunction) metrics; combine(latestFunction.value); + return true; } @Override public void calculate() { diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/ApdexMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/ApdexMetrics.java index 69d24a8ba..4cf4d25d4 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/ApdexMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/ApdexMetrics.java @@ -79,10 +79,11 @@ public abstract class ApdexMetrics extends Metrics implements IntValueHolder { } @Override - public final void combine(Metrics metrics) { + public final boolean combine(Metrics metrics) { tNum += ((ApdexMetrics) metrics).tNum; sNum += ((ApdexMetrics) metrics).sNum; totalNum += ((ApdexMetrics) metrics).totalNum; + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/CPMMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/CPMMetrics.java index 56361f145..bc0f02f01 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/CPMMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/CPMMetrics.java @@ -47,9 +47,10 @@ public abstract class CPMMetrics extends Metrics implements LongValueHolder { } @Override - public final void combine(Metrics metrics) { + public final boolean combine(Metrics metrics) { CPMMetrics cpmMetrics = (CPMMetrics) metrics; combine(cpmMetrics.total); + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/CountMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/CountMetrics.java index df75eff0c..9a223147f 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/CountMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/CountMetrics.java @@ -42,9 +42,10 @@ public abstract class CountMetrics extends Metrics implements LongValueHolder { } @Override - public final void combine(Metrics metrics) { + public final boolean combine(Metrics metrics) { CountMetrics countMetrics = (CountMetrics) metrics; combine(countMetrics.value); + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/DoubleAvgMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/DoubleAvgMetrics.java index 64ffa3251..9356c2119 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/DoubleAvgMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/DoubleAvgMetrics.java @@ -54,9 +54,10 @@ public abstract class DoubleAvgMetrics extends Metrics implements DoubleValueHol } @Override - public final void combine(Metrics metrics) { + public final boolean combine(Metrics metrics) { DoubleAvgMetrics doubleAvgMetrics = (DoubleAvgMetrics) metrics; combine(doubleAvgMetrics.summation, doubleAvgMetrics.count); + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/HistogramMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/HistogramMetrics.java index 76bebfc88..dbb487085 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/HistogramMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/HistogramMetrics.java @@ -75,9 +75,10 @@ public abstract class HistogramMetrics extends Metrics { } @Override - public void combine(Metrics metrics) { + public boolean combine(Metrics metrics) { HistogramMetrics histogramMetrics = (HistogramMetrics) metrics; this.dataset.append(histogramMetrics.dataset); + return true; } /** diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/LongAvgMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/LongAvgMetrics.java index a45d26b2d..661281c77 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/LongAvgMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/LongAvgMetrics.java @@ -54,9 +54,10 @@ public abstract class LongAvgMetrics extends Metrics implements LongValueHolder } @Override - public final void combine(Metrics metrics) { + public final boolean combine(Metrics metrics) { LongAvgMetrics longAvgMetrics = (LongAvgMetrics) metrics; combine(longAvgMetrics.summation, longAvgMetrics.count); + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/MaxDoubleMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/MaxDoubleMetrics.java index 242188199..5dcef2369 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/MaxDoubleMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/MaxDoubleMetrics.java @@ -43,9 +43,10 @@ public abstract class MaxDoubleMetrics extends Metrics implements DoubleValueHol } @Override - public final void combine(Metrics metrics) { + public final boolean combine(Metrics metrics) { MaxDoubleMetrics maxDoubleMetrics = (MaxDoubleMetrics) metrics; combine(maxDoubleMetrics.value); + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/MaxLongMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/MaxLongMetrics.java index 4ddfc4299..9b70a4741 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/MaxLongMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/MaxLongMetrics.java @@ -46,9 +46,10 @@ public abstract class MaxLongMetrics extends Metrics implements LongValueHolder } @Override - public final void combine(Metrics metrics) { + public final boolean combine(Metrics metrics) { MaxLongMetrics maxLongMetrics = (MaxLongMetrics) metrics; combine(maxLongMetrics.value); + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/Metrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/Metrics.java index 2531e3440..f61389a81 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/Metrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/Metrics.java @@ -56,8 +56,9 @@ public abstract class Metrics extends StreamData implements StorageData { * Merge the given metrics instance, these two must be the same metrics type. * * @param metrics to be merged + * @return {@code true} if the combined metrics should be continuously processed. {@code false} means it should be abandoned, and the implementation needs to keep the data unaltered in this case. */ - public abstract void combine(Metrics metrics); + public abstract boolean combine(Metrics metrics); /** * Calculate the metrics final value when required. diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/MinDoubleMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/MinDoubleMetrics.java index d9a9a51a7..bdc45e63e 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/MinDoubleMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/MinDoubleMetrics.java @@ -43,9 +43,10 @@ public abstract class MinDoubleMetrics extends Metrics implements DoubleValueHol } @Override - public final void combine(Metrics metrics) { + public final boolean combine(Metrics metrics) { MinDoubleMetrics minDoubleMetrics = (MinDoubleMetrics) metrics; combine(minDoubleMetrics.value); + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/MinLongMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/MinLongMetrics.java index 4025ea001..88f7fab2c 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/MinLongMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/MinLongMetrics.java @@ -43,9 +43,10 @@ public abstract class MinLongMetrics extends Metrics implements LongValueHolder } @Override - public final void combine(Metrics metrics) { + public final boolean combine(Metrics metrics) { MinLongMetrics minLongMetrics = (MinLongMetrics) metrics; combine(minLongMetrics.value); + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/PercentMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/PercentMetrics.java index eed7afb8d..aa6d32f96 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/PercentMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/PercentMetrics.java @@ -54,9 +54,10 @@ public abstract class PercentMetrics extends Metrics implements IntValueHolder { } @Override - public final void combine(Metrics metrics) { + public final boolean combine(Metrics metrics) { total += ((PercentMetrics) metrics).total; match += ((PercentMetrics) metrics).match; + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/PercentileMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/PercentileMetrics.java index ecad57eeb..0e1b2a669 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/PercentileMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/PercentileMetrics.java @@ -77,11 +77,12 @@ public abstract class PercentileMetrics extends Metrics implements MultiIntValue } @Override - public void combine(Metrics metrics) { + public boolean combine(Metrics metrics) { this.isCalculated = false; PercentileMetrics percentileMetrics = (PercentileMetrics) metrics; this.dataset.append(percentileMetrics.dataset); + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/PxxMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/PxxMetrics.java index 79da9db82..a65ebce03 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/PxxMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/PxxMetrics.java @@ -78,11 +78,12 @@ public abstract class PxxMetrics extends Metrics implements IntValueHolder { } @Override - public void combine(Metrics metrics) { + public boolean combine(Metrics metrics) { this.isCalculated = false; PxxMetrics pxxMetrics = (PxxMetrics) metrics; this.detailGroup.append(pxxMetrics.detailGroup); + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/RateMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/RateMetrics.java index df77f3b7e..830f1d7c5 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/RateMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/RateMetrics.java @@ -55,9 +55,10 @@ public abstract class RateMetrics extends Metrics implements IntValueHolder { } @Override - public final void combine(Metrics metrics) { + public final boolean combine(Metrics metrics) { denominator += ((RateMetrics) metrics).denominator; numerator += ((RateMetrics) metrics).numerator; + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/SumMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/SumMetrics.java index c57791e9b..a2f3d61fb 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/SumMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/SumMetrics.java @@ -42,9 +42,10 @@ public abstract class SumMetrics extends Metrics implements LongValueHolder { } @Override - public final void combine(Metrics metrics) { + public final boolean combine(Metrics metrics) { SumMetrics sumMetrics = (SumMetrics) metrics; combine(sumMetrics.value); + return true; } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/MetricsPersistentWorker.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/MetricsPersistentWorker.java index 5e483c401..f750e7c52 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/MetricsPersistentWorker.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/MetricsPersistentWorker.java @@ -174,7 +174,10 @@ public class MetricsPersistentWorker extends PersistenceWorker { /* * Merge metrics into cachedMetrics, change only happens inside cachedMetrics. */ - cachedMetrics.combine(metrics); + final boolean isAbandoned = !cachedMetrics.combine(metrics); + if (isAbandoned) { + continue; + } cachedMetrics.calculate(); prepareRequests.add(metricsDAO.prepareBatchUpdate(model, cachedMetrics)); nextWorker(cachedMetrics); diff --git a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/MetricsTest.java b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/MetricsTest.java index dd0fa80d7..a4834e8f1 100644 --- a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/MetricsTest.java +++ b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/MetricsTest.java @@ -78,8 +78,8 @@ public class MetricsTest { } @Override - public void combine(Metrics metrics) { - + public boolean combine(Metrics metrics) { + return true; } @Override