This is an automated email from the ASF dual-hosted git repository.

wankai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git


The following commit(s) were added to refs/heads/master by this push:
     new 2ea1293  Fix ElasticSearch implementation of `queryMetricsValues` and 
`readLabeledMetricsValues` doesn't fill default values (#8012)
2ea1293 is described below

commit 2ea12934ce1c06fc42ff359cd327e5402b555c50
Author: 吴晟 Wu Sheng <[email protected]>
AuthorDate: Wed Oct 27 08:27:09 2021 +0800

    Fix ElasticSearch implementation of `queryMetricsValues` and 
`readLabeledMetricsValues` doesn't fill default values (#8012)
    
    * Fix ElasticSearch implementation of `queryMetricsValues` and 
`readLabeledMetricsValues` doesn't fill default values
    * Change generated file path.
---
 CHANGES.md                                         | 37 ++++++++-------
 oap-server/server-starter/pom.xml                  | 19 +-------
 .../elasticsearch/query/MetricsQueryEsDAO.java     | 55 ++++++++++------------
 3 files changed, 48 insertions(+), 63 deletions(-)

diff --git a/CHANGES.md b/CHANGES.md
index b7e85d7..aca658b 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -4,26 +4,27 @@ Release Notes.
 
 8.9.0
 ------------------
+
 #### Project
 
 * Replace e2e cases to e2e-v2:
-  - Simple: JDK, Auth, SSL, mTLS
-  - Lua Nginx
-  - SelfObservability
-  - Gateway
-  - Meter
-  - Nodejs
-  - PHP
-  - VM: Prometheus Node Exporter, Zabbix
-  - go2sky
-  - log
-  - Python
-  - Storage
-  - Cluster
-  - Event
-  - Profile
-  - Kafka: Base, Meter, Log, Profile
-  - Client-JS
+    - Simple: JDK, Auth, SSL, mTLS
+    - Lua Nginx
+    - SelfObservability
+    - Gateway
+    - Meter
+    - Nodejs
+    - PHP
+    - VM: Prometheus Node Exporter, Zabbix
+    - go2sky
+    - log
+    - Python
+    - Storage
+    - Cluster
+    - Event
+    - Profile
+    - Kafka: Base, Meter, Log, Profile
+    - Client-JS
 * Support JDK 16 and 17.
 
 #### OAP Server
@@ -55,6 +56,8 @@ Release Notes.
 * Fix unexpected deleting due to TTL mechanism bug for H2, MySQL, TiDB and 
PostgreSQL.
 * Add a GraphQL query to get OAP version, display OAP version in startup 
message and error logs.
 * Fix TimeBucket missing in H2, MySQL, TiDB and PostgreSQL bug, which causes 
TTL doesn't work for `service_traffic`.
+* Fix ElasticSearch implementation of `queryMetricsValues` and 
`readLabeledMetricsValues` doesn't fill default values
+  when no available data in the ElasticSearch server.
 
 #### UI
 
diff --git a/oap-server/server-starter/pom.xml 
b/oap-server/server-starter/pom.xml
index 3468f83..7f29462 100644
--- a/oap-server/server-starter/pom.xml
+++ b/oap-server/server-starter/pom.xml
@@ -29,7 +29,8 @@
     <artifactId>server-starter</artifactId>
 
     <properties>
-        
<generateGitPropertiesFilename>${project.build.outputDirectory}/version.properties</generateGitPropertiesFilename>
+        
<generateGitPropertiesFilename>${project.basedir}/src/main/resources/version.properties
+        </generateGitPropertiesFilename>
     </properties>
 
     <dependencies>
@@ -265,22 +266,6 @@
 
     <build>
         <finalName>skywalking-oap</finalName>
-        <resources>
-            <resource>
-                <directory>src/main/resources</directory>
-                <filtering>true</filtering>
-                <includes>
-                    <include>version.properties</include>
-                </includes>
-            </resource>
-            <resource>
-                <directory>src/main/resources</directory>
-                <filtering>false</filtering>
-                <excludes>
-                    <exclude>version.properties</exclude>
-                </excludes>
-            </resource>
-        </resources>
         <plugins>
             <plugin>
                 <artifactId>maven-compiler-plugin</artifactId>
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 e3f9f44..38619c5 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
@@ -19,7 +19,6 @@
 package org.apache.skywalking.oap.server.storage.plugin.elasticsearch.query;
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -107,33 +106,31 @@ public class MetricsQueryEsDAO extends EsDAO implements 
IMetricsQueryDAO {
             }
             return id;
         }).collect(Collectors.toList());
+
         MetricsValues metricsValues = new MetricsValues();
 
         SearchResponse response = getClient().ids(tableName, ids);
-        if (response.getHits().getHits().isEmpty()) {
-            return metricsValues;
-        }
-
-        Map<String, Map<String, Object>> idMap = toMap(response.getHits());
-
-        // Label is null, because in readMetricsValues, no label parameter.
-        IntValues intValues = metricsValues.getValues();
-        for (String id : ids) {
-            KVInt kvInt = new KVInt();
-            kvInt.setId(id);
-            kvInt.setValue(0);
-            if (idMap.containsKey(id)) {
-                Map<String, Object> source = idMap.get(id);
-                kvInt.setValue(((Number) source.getOrDefault(valueColumnName, 
0)).longValue());
-            } else {
-                
kvInt.setValue(ValueColumnMetadata.INSTANCE.getDefaultValue(condition.getName()));
+        if (!response.getHits().getHits().isEmpty()) {
+            Map<String, Map<String, Object>> idMap = toMap(response.getHits());
+
+            // Label is null, because in readMetricsValues, no label parameter.
+            IntValues intValues = metricsValues.getValues();
+            for (String id : ids) {
+                KVInt kvInt = new KVInt();
+                kvInt.setId(id);
+                kvInt.setValue(0);
+                if (idMap.containsKey(id)) {
+                    Map<String, Object> source = idMap.get(id);
+                    kvInt.setValue(((Number) 
source.getOrDefault(valueColumnName, 0)).longValue());
+                } else {
+                    
kvInt.setValue(ValueColumnMetadata.INSTANCE.getDefaultValue(condition.getName()));
+                }
+                intValues.addKVInt(kvInt);
             }
-            intValues.addKVInt(kvInt);
         }
-
         metricsValues.setValues(
             Util.sortValues(
-                intValues, ids, 
ValueColumnMetadata.INSTANCE.getDefaultValue(condition.getName()))
+                metricsValues.getValues(), ids, 
ValueColumnMetadata.INSTANCE.getDefaultValue(condition.getName()))
         );
 
         return metricsValues;
@@ -158,15 +155,15 @@ public class MetricsQueryEsDAO extends EsDAO implements 
IMetricsQueryDAO {
         });
 
         SearchResponse response = getClient().ids(tableName, ids);
-        if (response.getHits().getHits().isEmpty()) {
-            return Collections.emptyList();
-        }
         Map<String, DataTable> idMap = new HashMap<>();
-        for (final SearchHit hit : response.getHits()) {
-            idMap.put(
-                hit.getId(),
-                new DataTable((String) 
hit.getSource().getOrDefault(valueColumnName, ""))
-            );
+
+        if (!response.getHits().getHits().isEmpty()) {
+            for (final SearchHit hit : response.getHits()) {
+                idMap.put(
+                    hit.getId(),
+                    new DataTable((String) 
hit.getSource().getOrDefault(valueColumnName, ""))
+                );
+            }
         }
         return Util.composeLabelValue(condition, labels, ids, idMap);
     }

Reply via email to