diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md index 451e4c7377ce39364031c1644869bdafad0ffb82..fcc9b80fcf4202af3e5f6096ea0e74f9a325c6f9 100644 --- a/docs/en/changes/changes.md +++ b/docs/en/changes/changes.md @@ -19,6 +19,7 @@ * Add `expPrefix`, `initExp` in MAL config. * Add component ID(7015) for Python Bottle plugin. * Remove legacy OAL `percentile` functions, `p99`, `p95`, `p90`, `p75`, `p50` func(s). +* Revert [#8066](https://github.com/apache/skywalking/pull/8066). Keep all metrics persistent even it is default value. #### UI 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 d2b800fbb6169cb737ac702147b9535166d19c5e..95f295b7639f7ce21a1f3a636f59a11c0b4be509 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 @@ -214,14 +214,4 @@ public abstract class AvgFunction extends Meter implements AcceptableValue public int hashCode() { return Objects.hash(entityId, getTimeBucket()); } - - @Override - public boolean haveDefault() { - return true; - } - - @Override - public boolean isDefaultValue() { - return value == 0; - } } 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 a8c88fd89ccbf7c77aeabb26318598630169cde9..586f7806deb80fdb333e29907c811b3e0b4c53b2 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 @@ -187,14 +187,4 @@ public abstract class LatestFunction extends Meter implements AcceptableValue public int hashCode() { return Objects.hash(getEntityId(), getTimeBucket()); } - - @Override - public boolean haveDefault() { - return true; - } - - @Override - public boolean isDefaultValue() { - return value == 0; - } } 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 be1ff82d79a0b16310d75a53ffbaf0a818a2fbf8..14b4750bc8b65a9abfc6b4dfdf3109b775588f09 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 @@ -95,14 +95,4 @@ public abstract class ApdexMetrics extends Metrics implements IntValueHolder { public int getValue() { return value; } - - @Override - public boolean haveDefault() { - return true; - } - - @Override - public boolean isDefaultValue() { - return value == 0; - } } 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 948c1f1fe03aedfcfcc833c0fccc0c62ca8451b6..bc0f02f01f0b6571cd5106242aada1411f9dba78 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 @@ -57,15 +57,5 @@ public abstract class CPMMetrics extends Metrics implements LongValueHolder { public void calculate() { this.value = total / getDurationInMinute(); } - - @Override - public boolean haveDefault() { - return true; - } - - @Override - public boolean isDefaultValue() { - return value == 0; - } } 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 1de36db9c5629ddbb89b34a24c7a407f730b8d50..9a223147f3565961b0eb0a291d4696cb5a855dee 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 @@ -51,14 +51,4 @@ public abstract class CountMetrics extends Metrics implements LongValueHolder { @Override public void calculate() { } - - @Override - public boolean haveDefault() { - return true; - } - - @Override - public boolean isDefaultValue() { - return value == 0; - } } 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 f5e7f75914e74eb63cbe4dd1543380f3060e4007..9356c211980b3f151c86cf428dcfa4f242e82ff9 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 @@ -64,15 +64,4 @@ public abstract class DoubleAvgMetrics extends Metrics implements DoubleValueHol public final void calculate() { this.value = this.summation / this.count; } - - @Override - public boolean haveDefault() { - return true; - } - - @Override - public boolean isDefaultValue() { - // Value in the query stage will ignore decimal places after a decimal point - return Double.valueOf(value).longValue() == 0; - } } diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/HavingDefaultValue.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/HavingDefaultValue.java deleted file mode 100644 index d446282c973d9569ee8769adfbd9cd582499b9af..0000000000000000000000000000000000000000 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/HavingDefaultValue.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.core.analysis.metrics; - -/** - * HavingDefaultValue interface defines a capability for the metric implementations, which has the declaration of the - * default value. - * - * For the declared metrics, the OAP server would skip the persistence of minute dimensionality metrics to reduce - * resource costs for the database, when the value of the metric is the default. - */ -public interface HavingDefaultValue { - /** - * @return true if the implementation of this metric has the definition of default value. - */ - default boolean haveDefault() { - return false; - } - - /** - * @return true when the latest value equals the default value. - */ - default boolean isDefaultValue() { - return false; - } -} 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 ad0c12d29ad87baa30e3708a32da0cdb0f214d61..661281c7706329c170f87c3c119188fc138f45e0 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 @@ -64,14 +64,4 @@ public abstract class LongAvgMetrics extends Metrics implements LongValueHolder public final void calculate() { this.value = this.summation / this.count; } - - @Override - public boolean haveDefault() { - return true; - } - - @Override - public boolean isDefaultValue() { - return value == 0; - } } 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 c0d533636b0c2884b588f8393e026096fb67d559..5dcef2369c80a2fe8f5055e867bf709aec45bbf9 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 @@ -52,15 +52,4 @@ public abstract class MaxDoubleMetrics extends Metrics implements DoubleValueHol @Override public void calculate() { } - - @Override - public boolean haveDefault() { - return true; - } - - @Override - public boolean isDefaultValue() { - // Value in the query stage will ignore decimal places after a decimal point - return Double.valueOf(value).longValue() == 0; - } } 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 635ceef43cade65f3860a1df8c84b2b0e24c9d97..9b70a474140bde6767c97402616f4577b58a8f0b 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 @@ -25,6 +25,9 @@ import org.apache.skywalking.oap.server.core.analysis.metrics.annotation.Metrics import org.apache.skywalking.oap.server.core.analysis.metrics.annotation.SourceFrom; import org.apache.skywalking.oap.server.core.storage.annotation.Column; +/** + * + **/ @MetricsFunction(functionName = "max") public abstract class MaxLongMetrics extends Metrics implements LongValueHolder { @@ -33,7 +36,7 @@ public abstract class MaxLongMetrics extends Metrics implements LongValueHolder @Getter @Setter @Column(columnName = VALUE, dataType = Column.ValueDataType.COMMON_VALUE) - private long value = Long.MIN_VALUE; + private long value; @Entrance public final void combine(@SourceFrom long count) { @@ -52,14 +55,4 @@ public abstract class MaxLongMetrics extends Metrics implements LongValueHolder @Override public void calculate() { } - - @Override - public boolean haveDefault() { - return true; - } - - @Override - public boolean isDefaultValue() { - return value == 0; - } } 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 6763a4710433b4d25730f6cdcebf67722d0cb87d..1bbcd063c4cd002711a17d4c3c50f335d765d36e 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 @@ -33,7 +33,7 @@ import org.apache.skywalking.oap.server.core.storage.annotation.Column; @EqualsAndHashCode(of = { "timeBucket" }) -public abstract class Metrics extends StreamData implements StorageData, HavingDefaultValue { +public abstract class Metrics extends StreamData implements StorageData { public static final String TIME_BUCKET = "time_bucket"; public static final String ENTITY_ID = "entity_id"; 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 3315b50b8f5e5bff60e256c9745b801c010237fa..bdc45e63e8c84f7140884cb62959f42ac4eba4d4 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 @@ -52,15 +52,4 @@ public abstract class MinDoubleMetrics extends Metrics implements DoubleValueHol @Override public void calculate() { } - - @Override - public boolean haveDefault() { - return true; - } - - @Override - public boolean isDefaultValue() { - // Value in the query stage will ignore decimal places after a decimal point - return Double.valueOf(value).longValue() == 0; - } } 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 bcdd15bac8bc179a4a12d545ba243b35aec8c034..88f7fab2c5ef52eae71d55ab3229fc833ee1588e 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 @@ -52,14 +52,4 @@ public abstract class MinLongMetrics extends Metrics implements LongValueHolder @Override public void calculate() { } - - @Override - public boolean haveDefault() { - return true; - } - - @Override - public boolean isDefaultValue() { - return value == 0; - } } 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 bf0e463a5a9e625e5a6130e1da421c75fd82fbbe..aa6d32f96f2cd5c4ce76ba6ad8df13a16aa24c95 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 @@ -69,14 +69,4 @@ public abstract class PercentMetrics extends Metrics implements IntValueHolder { public int getValue() { return percentage; } - - @Override - public boolean haveDefault() { - return true; - } - - @Override - public boolean isDefaultValue() { - return percentage == 0; - } } 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 479727d8973ccc2e1737faa4fc14f7019c0f6232..830f1d7c5e56074eba34c5054ff4c5c920f6e152 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 @@ -73,14 +73,4 @@ public abstract class RateMetrics extends Metrics implements IntValueHolder { public int getValue() { return percentage; } - - @Override - public boolean haveDefault() { - return true; - } - - @Override - public boolean isDefaultValue() { - return percentage == 0; - } } 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 5ad9962715a71d53773422cab246600aaf05931a..a2f3d61fb9b394a7e7d75d9be43c416005f0cbe6 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 @@ -51,14 +51,4 @@ public abstract class SumMetrics extends Metrics implements LongValueHolder { @Override public void calculate() { } - - @Override - public boolean haveDefault() { - return true; - } - - @Override - public boolean isDefaultValue() { - return value == 0; - } } 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 9758cb3e89884a279839ebbe2149d022dbce3070..ccab0aba0f986c4346e5ee26e74620b746e0558d 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 @@ -28,6 +28,10 @@ import java.util.Optional; import java.util.Properties; import java.util.stream.Collectors; import lombok.extern.slf4j.Slf4j; +import org.apache.skywalking.oap.server.library.datacarrier.DataCarrier; +import org.apache.skywalking.oap.server.library.datacarrier.consumer.BulkConsumePool; +import org.apache.skywalking.oap.server.library.datacarrier.consumer.ConsumerPoolFactory; +import org.apache.skywalking.oap.server.library.datacarrier.consumer.IConsumer; import org.apache.skywalking.oap.server.core.UnexpectedException; import org.apache.skywalking.oap.server.core.analysis.data.MergableBufferedData; import org.apache.skywalking.oap.server.core.analysis.data.ReadWriteSafeCache; @@ -37,10 +41,6 @@ import org.apache.skywalking.oap.server.core.storage.IMetricsDAO; import org.apache.skywalking.oap.server.core.storage.model.Model; import org.apache.skywalking.oap.server.core.worker.AbstractWorker; import org.apache.skywalking.oap.server.library.client.request.PrepareRequest; -import org.apache.skywalking.oap.server.library.datacarrier.DataCarrier; -import org.apache.skywalking.oap.server.library.datacarrier.consumer.BulkConsumePool; -import org.apache.skywalking.oap.server.library.datacarrier.consumer.ConsumerPoolFactory; -import org.apache.skywalking.oap.server.library.datacarrier.consumer.IConsumer; import org.apache.skywalking.oap.server.library.module.ModuleDefineHolder; import org.apache.skywalking.oap.server.telemetry.TelemetryModule; import org.apache.skywalking.oap.server.telemetry.api.CounterMetrics; @@ -68,7 +68,6 @@ public class MetricsPersistentWorker extends PersistenceWorker { private final boolean supportUpdate; private long sessionTimeout; private CounterMetrics aggregationCounter; - private CounterMetrics skippedMetricsCounter; /** * The counter for the round of persistent. */ @@ -83,11 +82,6 @@ public class MetricsPersistentWorker extends PersistenceWorker { * @since 8.7.0 TTL settings from {@link org.apache.skywalking.oap.server.core.CoreModuleConfig#getMetricsDataTTL()} */ private int metricsDataTTL; - /** - * @since 8.9.0 The persistence of minute dimensionality metrics will be skipped if the value of the metric is the - * default. - */ - private boolean skipDefaultValueMetric; MetricsPersistentWorker(ModuleDefineHolder moduleDefineHolder, Model model, IMetricsDAO metricsDAO, AbstractWorker nextAlarmWorker, AbstractWorker nextExportWorker, @@ -106,7 +100,6 @@ public class MetricsPersistentWorker extends PersistenceWorker { this.persistentCounter = 0; this.persistentMod = 1; this.metricsDataTTL = metricsDataTTL; - this.skipDefaultValueMetric = true; String name = "METRICS_L2_AGGREGATION"; int size = BulkConsumePool.Creator.recommendMaxSize() / 8; @@ -131,11 +124,6 @@ public class MetricsPersistentWorker extends PersistenceWorker { new MetricsTag.Keys("metricName", "level", "dimensionality"), new MetricsTag.Values(model.getName(), "2", model.getDownsampling().getName()) ); - skippedMetricsCounter = metricsCreator.createCounter( - "metrics_persistence_skipped", "The number of metrics skipped in persistence due to be in default value", - new MetricsTag.Keys("metricName", "dimensionality"), - new MetricsTag.Values(model.getName(), model.getDownsampling().getName()) - ); SESSION_TIMEOUT_OFFSITE_COUNTER++; } @@ -153,12 +141,6 @@ public class MetricsPersistentWorker extends PersistenceWorker { null, null, null, enableDatabaseSession, supportUpdate, storageSessionTimeout, metricsDataTTL ); - - // Skipping default value mechanism only works for minute dimensionality. - // Metrics in hour and day dimensionalities would not apply this as duration is too long, - // applying this could make precision of hour/day metrics to be lost easily. - this.skipDefaultValueMetric = false; - // For a down-sampling metrics, we prolong the session timeout for 4 times, nearly 5 minutes. // And add offset according to worker creation sequence, to avoid context clear overlap, // eventually optimize load of IDs reading. @@ -243,22 +225,12 @@ public class MetricsPersistentWorker extends PersistenceWorker { continue; } cachedMetrics.calculate(); - if (skipDefaultValueMetric && cachedMetrics.haveDefault() && cachedMetrics.isDefaultValue()) { - // Skip metrics in default value - skippedMetricsCounter.inc(); - } else { - prepareRequests.add(metricsDAO.prepareBatchUpdate(model, cachedMetrics)); - } + prepareRequests.add(metricsDAO.prepareBatchUpdate(model, cachedMetrics)); nextWorker(cachedMetrics); cachedMetrics.setLastUpdateTimestamp(timestamp); } else { metrics.calculate(); - if (skipDefaultValueMetric && metrics.haveDefault() && metrics.isDefaultValue()) { - // Skip metrics in default value - skippedMetricsCounter.inc(); - } else { - prepareRequests.add(metricsDAO.prepareBatchInsert(model, metrics)); - } + prepareRequests.add(metricsDAO.prepareBatchInsert(model, metrics)); nextWorker(metrics); metrics.setLastUpdateTimestamp(timestamp); }