You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2022/09/27 01:55:17 UTC
[skywalking] branch fix created (now 67f92af447)
This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a change to branch fix
in repository https://gitbox.apache.org/repos/asf/skywalking.git
at 67f92af447 Fix two kernel level bugs.
This branch includes the following new commits:
new 67f92af447 Fix two kernel level bugs.
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[skywalking] 01/01: Fix two kernel level bugs.
Posted by wu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch fix
in repository https://gitbox.apache.org/repos/asf/skywalking.git
commit 67f92af447256bd545328d770ba9bedb2e0224ac
Author: Wu Sheng <wu...@foxmail.com>
AuthorDate: Tue Sep 27 09:55:06 2022 +0800
Fix two kernel level bugs.
---
docs/en/changes/changes.md | 4 ++++
.../analysis/meter/function/HistogramFunction.java | 4 ++--
.../meter/function/avg/AvgHistogramFunction.java | 8 ++++----
.../avg/AvgHistogramPercentileFunction.java | 16 ++++++++--------
.../meter/function/avg/AvgLabeledFunction.java | 8 ++++----
.../banyandb/measure/BanyanDBMetricsQueryDAO.java | 21 ++++++++++++---------
.../elasticsearch/query/MetricsQueryEsDAO.java | 6 +++++-
.../plugin/jdbc/h2/dao/H2MetricsQueryDAO.java | 6 +++++-
8 files changed, 44 insertions(+), 29 deletions(-)
diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md
index 1ce03c3648..2fe6ec7a2e 100644
--- a/docs/en/changes/changes.md
+++ b/docs/en/changes/changes.md
@@ -20,6 +20,10 @@
in `no-init` mode.
* Make sure instance list ordered in TTL processor to avoid TTL timer never runs.
* Support monitoring PostgreSQL slow SQLs.
+* Fix meter functions `avgHistogram`, `avgHistogramPercentile`, `avgLabeled`, `sumHistogram` having data conflict when
+ dowmsampling.
+* Do sorting `readLabeledMetricsValues` result forcedly in case the storage(database) doesn't return data not consistent
+ with parameter list.
#### UI
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 40c44ae770..7274372a07 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
@@ -101,7 +101,7 @@ public abstract class HistogramFunction extends Meter implements AcceptableValue
HistogramFunction metrics = (HistogramFunction) createNew();
metrics.setEntityId(getEntityId());
metrics.setTimeBucket(toTimeBucketInHour());
- metrics.setDataset(getDataset());
+ metrics.getDataset().copyFrom(getDataset());
return metrics;
}
@@ -110,7 +110,7 @@ public abstract class HistogramFunction extends Meter implements AcceptableValue
HistogramFunction metrics = (HistogramFunction) createNew();
metrics.setEntityId(getEntityId());
metrics.setTimeBucket(toTimeBucketInDay());
- metrics.setDataset(getDataset());
+ metrics.getDataset().copyFrom(getDataset());
return metrics;
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgHistogramFunction.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgHistogramFunction.java
index 35dc54480b..b924bdbfb4 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgHistogramFunction.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgHistogramFunction.java
@@ -126,8 +126,8 @@ public abstract class AvgHistogramFunction extends Meter implements AcceptableVa
AvgHistogramFunction metrics = (AvgHistogramFunction) createNew();
metrics.setEntityId(getEntityId());
metrics.setTimeBucket(toTimeBucketInHour());
- metrics.setCount(getCount());
- metrics.setSummation(getSummation());
+ metrics.getSummation().copyFrom(getSummation());
+ metrics.getCount().copyFrom(getCount());
return metrics;
}
@@ -136,8 +136,8 @@ public abstract class AvgHistogramFunction extends Meter implements AcceptableVa
AvgHistogramFunction metrics = (AvgHistogramFunction) createNew();
metrics.setEntityId(getEntityId());
metrics.setTimeBucket(toTimeBucketInDay());
- metrics.setCount(getCount());
- metrics.setSummation(getSummation());
+ metrics.getSummation().copyFrom(getSummation());
+ metrics.getCount().copyFrom(getCount());
return metrics;
}
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 ace67de624..6d56de2d27 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
@@ -265,10 +265,10 @@ public abstract class AvgHistogramPercentileFunction extends Meter implements Ac
AvgHistogramPercentileFunction metrics = (AvgHistogramPercentileFunction) createNew();
metrics.setEntityId(getEntityId());
metrics.setTimeBucket(toTimeBucketInHour());
- metrics.setSummation(getSummation());
- metrics.setCount(getCount());
- metrics.setRanks(getRanks());
- metrics.setPercentileValues(getPercentileValues());
+ metrics.getSummation().copyFrom(getSummation());
+ metrics.getCount().copyFrom(getCount());
+ metrics.getRanks().copyFrom(getRanks());
+ metrics.getPercentileValues().copyFrom(getPercentileValues());
return metrics;
}
@@ -277,10 +277,10 @@ public abstract class AvgHistogramPercentileFunction extends Meter implements Ac
AvgHistogramPercentileFunction metrics = (AvgHistogramPercentileFunction) createNew();
metrics.setEntityId(getEntityId());
metrics.setTimeBucket(toTimeBucketInDay());
- metrics.setSummation(getSummation());
- metrics.setCount(getCount());
- metrics.setRanks(getRanks());
- metrics.setPercentileValues(getPercentileValues());
+ metrics.getSummation().copyFrom(getSummation());
+ metrics.getCount().copyFrom(getCount());
+ metrics.getRanks().copyFrom(getRanks());
+ metrics.getPercentileValues().copyFrom(getPercentileValues());
return metrics;
}
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 d971ef7fb9..2783fc0228 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
@@ -112,8 +112,8 @@ public abstract class AvgLabeledFunction extends Meter implements AcceptableValu
metrics.setEntityId(getEntityId());
metrics.setTimeBucket(toTimeBucketInHour());
metrics.setServiceId(getServiceId());
- metrics.setSummation(getSummation());
- metrics.setCount(getCount());
+ metrics.getSummation().copyFrom(getSummation());
+ metrics.getCount().copyFrom(getCount());
return metrics;
}
@@ -123,8 +123,8 @@ public abstract class AvgLabeledFunction extends Meter implements AcceptableValu
metrics.setEntityId(getEntityId());
metrics.setTimeBucket(toTimeBucketInDay());
metrics.setServiceId(getServiceId());
- metrics.setSummation(getSummation());
- metrics.setCount(getCount());
+ metrics.getSummation().copyFrom(getSummation());
+ metrics.getCount().copyFrom(getCount());
return metrics;
}
diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetricsQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetricsQueryDAO.java
index cf61fa63e9..74cc787625 100644
--- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetricsQueryDAO.java
+++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetricsQueryDAO.java
@@ -19,6 +19,13 @@
package org.apache.skywalking.oap.server.storage.plugin.banyandb.measure;
import com.google.common.collect.ImmutableSet;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
import org.apache.skywalking.banyandb.v1.client.DataPoint;
import org.apache.skywalking.banyandb.v1.client.MeasureQuery;
import org.apache.skywalking.banyandb.v1.client.MeasureQueryResponse;
@@ -41,14 +48,6 @@ import org.apache.skywalking.oap.server.storage.plugin.banyandb.MetadataRegistry
import org.apache.skywalking.oap.server.storage.plugin.banyandb.stream.AbstractBanyanDBDAO;
import org.apache.skywalking.oap.server.storage.plugin.banyandb.util.ByteUtil;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
public class BanyanDBMetricsQueryDAO extends AbstractBanyanDBDAO implements IMetricsQueryDAO {
public BanyanDBMetricsQueryDAO(BanyanDBStorageClient client) {
super(client);
@@ -168,7 +167,11 @@ public class BanyanDBMetricsQueryDAO extends AbstractBanyanDBDAO implements IMet
);
}
- return Util.composeLabelValue(condition, labels, ids, dataTableMap);
+ return Util.sortValues(
+ Util.composeLabelValue(condition, labels, ids, dataTableMap),
+ ids,
+ ValueColumnMetadata.INSTANCE.getDefaultValue(condition.getName())
+ );
}
@Override
diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetricsQueryEsDAO.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetricsQueryEsDAO.java
index f36cbc8cce..43b79bed97 100644
--- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetricsQueryEsDAO.java
+++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetricsQueryEsDAO.java
@@ -183,7 +183,11 @@ public class MetricsQueryEsDAO extends EsDAO implements IMetricsQueryDAO {
);
}
}
- return Util.composeLabelValue(condition, labels, ids, idMap);
+ return Util.sortValues(
+ Util.composeLabelValue(condition, labels, ids, idMap),
+ ids,
+ ValueColumnMetadata.INSTANCE.getDefaultValue(condition.getName())
+ );
}
@Override
diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2MetricsQueryDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2MetricsQueryDAO.java
index 66fbb67373..f03b08748b 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2MetricsQueryDAO.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2MetricsQueryDAO.java
@@ -186,7 +186,11 @@ public class H2MetricsQueryDAO extends H2SQLExecutor implements IMetricsQueryDAO
} catch (SQLException e) {
throw new IOException(e);
}
- return Util.composeLabelValue(condition, labels, ids, idMap);
+ return Util.sortValues(
+ Util.composeLabelValue(condition, labels, ids, idMap),
+ ids,
+ ValueColumnMetadata.INSTANCE.getDefaultValue(condition.getName())
+ );
}
@Override