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 2024/02/19 08:20:51 UTC

(skywalking) branch master updated: Fix ServiceInstance `in` query. (#11888)

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

wusheng 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 a471b85ac2 Fix ServiceInstance `in` query. (#11888)
a471b85ac2 is described below

commit a471b85ac2648d4a93ec4e853e4ee101324cf1bd
Author: weixiang1862 <65...@qq.com>
AuthorDate: Mon Feb 19 16:20:45 2024 +0800

    Fix ServiceInstance `in` query. (#11888)
---
 docs/en/changes/changes.md                                     |  1 +
 .../plugin/banyandb/measure/BanyanDBMetadataQueryDAO.java      |  4 +++-
 .../storage/plugin/jdbc/common/dao/JDBCMetadataQueryDAO.java   | 10 ++++++----
 3 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md
index 0cad776e92..fde1695012 100644
--- a/docs/en/changes/changes.md
+++ b/docs/en/changes/changes.md
@@ -50,6 +50,7 @@
 * Add Service Hierarchy auto matching layer relationships (upper -> lower) as following:
   - ROCKETMQ -> K8S_SERVICE
   - VIRTUAL_MQ -> ROCKETMQ
+* Fix ServiceInstance `in` query.
 
 #### UI
 
diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetadataQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetadataQueryDAO.java
index 957c15ab31..07333538d1 100644
--- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetadataQueryDAO.java
+++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetadataQueryDAO.java
@@ -162,7 +162,9 @@ public class BanyanDBMetadataQueryDAO extends AbstractBanyanDBDAO implements IMe
                         List<AbstractCriteria> instanceRelationsQueryConditions = new ArrayList<>(instanceIds.size());
                         for (final String instanceId : instanceIds) {
                             final IDManager.ServiceInstanceID.InstanceIDDefinition def = IDManager.ServiceInstanceID.analysisId(instanceId);
-                            and(Lists.newArrayList(eq(InstanceTraffic.SERVICE_ID, def.getServiceId()), eq(InstanceTraffic.NAME, def.getName())));
+                            instanceRelationsQueryConditions.add(
+                                and(Lists.newArrayList(eq(InstanceTraffic.SERVICE_ID, def.getServiceId()), eq(InstanceTraffic.NAME, def.getName())))
+                            );
                         }
                         query.criteria(or(instanceRelationsQueryConditions));
                     }
diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCMetadataQueryDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCMetadataQueryDAO.java
index ff163df875..1ed5a6259a 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCMetadataQueryDAO.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCMetadataQueryDAO.java
@@ -23,6 +23,7 @@ import com.google.gson.Gson;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import com.linecorp.armeria.common.annotation.Nullable;
+import java.util.stream.Collectors;
 import lombok.SneakyThrows;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.skywalking.oap.server.core.analysis.IDManager;
@@ -186,10 +187,11 @@ public class JDBCMetadataQueryDAO implements IMetadataQueryDAO {
             sql.append("select * from ").append(table).append(" where ")
                 .append(JDBCTableInstaller.TABLE_COLUMN).append(" = ?");
             condition.add(InstanceTraffic.INDEX_NAME);
-            for (String instanceId : instanceIds) {
-                sql.append(" and ").append(JDBCTableInstaller.ID_COLUMN).append(" = ?");
-                condition.add(instanceId);
-            }
+            sql.append(" and ").append(JDBCTableInstaller.ID_COLUMN).append(" in ")
+               .append(
+                   instanceIds.stream().map(instanceId -> "?").collect(Collectors.joining(",", "(", ")"))
+               );
+            condition.addAll(instanceIds);
             sql.append(" limit ").append(instanceIds.size());
 
             final var result = jdbcClient.executeQuery(sql.toString(), resultSet -> buildInstances(resultSet), condition.toArray(new Object[0]));