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 2f03a01791 Fix missing `taskId` filter in pprof task log query and its 
DB implementations (#13807)
2f03a01791 is described below

commit 2f03a0179157a3b06416221516733825bb452521
Author: mrproliu <[email protected]>
AuthorDate: Thu Apr 9 11:54:56 2026 +0800

    Fix missing `taskId` filter in pprof task log query and its DB 
implementations (#13807)
---
 docs/en/changes/changes.md                                   |  1 +
 .../oap/server/core/profiling/pprof/PprofQueryService.java   | 12 +++---------
 .../core/storage/profiling/pprof/IPprofTaskLogQueryDAO.java  |  8 ++++++--
 .../plugin/banyandb/stream/BanyanDBPprofTaskLogQueryDAO.java |  8 +++++++-
 .../plugin/elasticsearch/query/PprofTaskLogQueryEsDAO.java   | 10 ++++++++--
 .../plugin/jdbc/common/dao/JDBCPprofTaskLogQueryDAO.java     | 12 +++++++++---
 6 files changed, 34 insertions(+), 17 deletions(-)

diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md
index edc2abaca9..c0bac9613b 100644
--- a/docs/en/changes/changes.md
+++ b/docs/en/changes/changes.md
@@ -13,6 +13,7 @@
 * Fix duplicate `TABLE_COLUMN` condition in 
`JDBCMetadataQueryDAO.findEndpoint()`, which was binding the same parameter 
twice due to a copy-paste error.
 * Support MCP (Model Context Protocol) observability for Envoy AI Gateway: MCP 
metrics (request CPM/latency, method breakdown, backend breakdown, 
initialization latency, capabilities), MCP access log sampling (errors only), 
`ai_route_type` searchable log tag, and MCP dashboard tabs.
 * Add weighted handler support to `BatchQueue` adaptive partitioning. MAL 
metrics use weight 0.05 at L1 (vs 1.0 for OAL), reducing partition count and 
memory overhead when many MAL metric types are registered.
+* Fix missing `taskId` filter in pprof task log query and its 
JDBC/BanyanDB/Elasticsearch implementations.
 
 #### UI
 
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/pprof/PprofQueryService.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/pprof/PprofQueryService.java
index 101b5a685f..b84d73fb6e 100644
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/pprof/PprofQueryService.java
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/pprof/PprofQueryService.java
@@ -105,15 +105,9 @@ public class PprofQueryService implements Service {
     }
 
     public List<PprofTaskLog> queryPprofTaskLogs(String taskId) throws 
IOException {
-        List<PprofTaskLog> taskLogList = getTaskLogQueryDAO().getTaskLogList();
-        return findMatchedLogs(taskId, taskLogList);
-    }
-
-    private List<PprofTaskLog> findMatchedLogs(final String taskID, final 
List<PprofTaskLog> allLogs) {
-        return allLogs.stream()
-                      .filter(l -> Objects.equals(l.getId(), taskID))
-                      .map(this::extendTaskLog)
-                      .collect(Collectors.toList());
+        return getTaskLogQueryDAO().getTaskLogList(taskId).stream()
+                                   .map(this::extendTaskLog)
+                                   .collect(Collectors.toList());
     }
 
     private PprofTaskLog extendTaskLog(PprofTaskLog log) {
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/profiling/pprof/IPprofTaskLogQueryDAO.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/profiling/pprof/IPprofTaskLogQueryDAO.java
index 37b0205d87..d4325914d3 100644
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/profiling/pprof/IPprofTaskLogQueryDAO.java
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/profiling/pprof/IPprofTaskLogQueryDAO.java
@@ -25,7 +25,11 @@ import org.apache.skywalking.oap.server.core.storage.DAO;
 
 public interface IPprofTaskLogQueryDAO extends DAO {
     /**
-     * search all task log list in appoint task id
+     * Search task logs by the given task id.
+     *
+     * @param taskId the task id to filter by, must not be null or blank
+     * @return the task logs associated with the given task id
+     * @throws IOException if the query fails
      */
-    List<PprofTaskLog> getTaskLogList() throws IOException;
+    List<PprofTaskLog> getTaskLogList(String taskId) throws IOException;
 }
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBPprofTaskLogQueryDAO.java
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBPprofTaskLogQueryDAO.java
index 38b133d649..5f4054da1c 100644
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBPprofTaskLogQueryDAO.java
+++ 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBPprofTaskLogQueryDAO.java
@@ -20,6 +20,7 @@ package 
org.apache.skywalking.oap.server.storage.plugin.banyandb.stream;
 
 import com.google.common.collect.ImmutableSet;
 import java.io.IOException;
+import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
@@ -30,6 +31,7 @@ import 
org.apache.skywalking.oap.server.core.profiling.pprof.storage.PprofTaskLo
 import org.apache.skywalking.oap.server.core.query.PprofTaskLog;
 import 
org.apache.skywalking.oap.server.core.query.type.PprofTaskLogOperationType;
 import 
org.apache.skywalking.oap.server.core.storage.profiling.pprof.IPprofTaskLogQueryDAO;
+import org.apache.skywalking.oap.server.library.util.StringUtil;
 import 
org.apache.skywalking.oap.server.storage.plugin.banyandb.BanyanDBStorageClient;
 
 /**
@@ -52,12 +54,16 @@ public class BanyanDBPprofTaskLogQueryDAO extends 
AbstractBanyanDBDAO implements
     }
 
     @Override
-    public List<PprofTaskLog> getTaskLogList() throws IOException {
+    public List<PprofTaskLog> getTaskLogList(String taskId) throws IOException 
{
+        if (StringUtil.isBlank(taskId)) {
+            return Collections.emptyList();
+        }
         StreamQueryResponse resp = query(
             false, PprofTaskLogRecord.INDEX_NAME, TAGS,
             new QueryBuilder<StreamQuery>() {
                 @Override
                 public void apply(StreamQuery query) {
+                    query.and(eq(PprofTaskLogRecord.TASK_ID, taskId));
                     
query.setLimit(BanyanDBPprofTaskLogQueryDAO.this.queryMaxSize);
                 }
             }
diff --git 
a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/PprofTaskLogQueryEsDAO.java
 
b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/PprofTaskLogQueryEsDAO.java
index 36e3f18f18..bc9783a929 100644
--- 
a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/PprofTaskLogQueryEsDAO.java
+++ 
b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/PprofTaskLogQueryEsDAO.java
@@ -19,6 +19,7 @@
 package org.apache.skywalking.oap.server.storage.plugin.elasticsearch.query;
 
 import java.io.IOException;
+import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -34,6 +35,7 @@ import 
org.apache.skywalking.oap.server.core.query.PprofTaskLog;
 import 
org.apache.skywalking.oap.server.core.query.type.PprofTaskLogOperationType;
 import 
org.apache.skywalking.oap.server.core.storage.profiling.pprof.IPprofTaskLogQueryDAO;
 import 
org.apache.skywalking.oap.server.library.client.elasticsearch.ElasticSearchClient;
+import org.apache.skywalking.oap.server.library.util.StringUtil;
 import 
org.apache.skywalking.oap.server.storage.plugin.elasticsearch.base.EsDAO;
 import 
org.apache.skywalking.oap.server.storage.plugin.elasticsearch.base.IndexController;
 
@@ -48,13 +50,17 @@ public class PprofTaskLogQueryEsDAO extends EsDAO 
implements IPprofTaskLogQueryD
     }
 
     @Override
-    public List<PprofTaskLog> getTaskLogList() throws IOException {
+    public List<PprofTaskLog> getTaskLogList(String taskId) throws IOException 
{
+        if (StringUtil.isBlank(taskId)) {
+            return Collections.emptyList();
+        }
         final String index = 
IndexController.LogicIndicesRegister.getPhysicalTableName(PprofTaskLogRecord.INDEX_NAME);
         final BoolQueryBuilder query = Query.bool();
         if 
(IndexController.LogicIndicesRegister.isMergedTable(PprofTaskLogRecord.INDEX_NAME))
 {
             
query.must(Query.term(IndexController.LogicIndicesRegister.RECORD_TABLE_NAME, 
PprofTaskLogRecord.INDEX_NAME));
         }
-        
+        query.must(Query.term(PprofTaskLogRecord.TASK_ID, taskId));
+
         final SearchBuilder search =
                 Search.builder().query(query)
                         .sort(PprofTaskLogRecord.OPERATION_TIME, 
Sort.Order.DESC)
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/JDBCPprofTaskLogQueryDAO.java
 
b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCPprofTaskLogQueryDAO.java
index 0db85eca50..1a09aff5f4 100644
--- 
a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCPprofTaskLogQueryDAO.java
+++ 
b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCPprofTaskLogQueryDAO.java
@@ -30,6 +30,7 @@ import 
org.apache.skywalking.oap.server.core.query.PprofTaskLog;
 import 
org.apache.skywalking.oap.server.core.query.type.PprofTaskLogOperationType;
 import 
org.apache.skywalking.oap.server.core.storage.profiling.pprof.IPprofTaskLogQueryDAO;
 import 
org.apache.skywalking.oap.server.library.client.jdbc.hikaricp.JDBCClient;
+import org.apache.skywalking.oap.server.library.util.StringUtil;
 import 
org.apache.skywalking.oap.server.storage.plugin.jdbc.common.JDBCTableInstaller;
 import 
org.apache.skywalking.oap.server.storage.plugin.jdbc.common.SQLAndParameters;
 import org.apache.skywalking.oap.server.storage.plugin.jdbc.common.TableHelper;
@@ -41,11 +42,14 @@ public class JDBCPprofTaskLogQueryDAO implements 
IPprofTaskLogQueryDAO {
 
     @Override
     @SneakyThrows
-    public List<PprofTaskLog> getTaskLogList() {
+    public List<PprofTaskLog> getTaskLogList(String taskId) {
+        if (StringUtil.isBlank(taskId)) {
+            return new ArrayList<>();
+        }
         List<String> tables = 
tableHelper.getTablesWithinTTL(PprofTaskLogRecord.INDEX_NAME);
         final List<PprofTaskLog> results = new ArrayList<PprofTaskLog>();
         for (String table : tables) {
-            SQLAndParameters sqlAndParameters = buildSQL(table);
+            SQLAndParameters sqlAndParameters = buildSQL(table, taskId);
             List<PprofTaskLog> logs = jdbcClient.executeQuery(
                 sqlAndParameters.sql(),
                 resultSet -> {
@@ -62,12 +66,14 @@ public class JDBCPprofTaskLogQueryDAO implements 
IPprofTaskLogQueryDAO {
         return results;
     }
 
-    private SQLAndParameters buildSQL(String table) {
+    private SQLAndParameters buildSQL(String table, String taskId) {
         StringBuilder sql = new StringBuilder();
         List<Object> parameters = new ArrayList<>(2);
         sql.append("select * from ").append(table)
            .append(" where ").append(JDBCTableInstaller.TABLE_COLUMN).append(" 
= ?");
         parameters.add(PprofTaskLogRecord.INDEX_NAME);
+        sql.append(" and ").append(PprofTaskLogRecord.TASK_ID).append(" = ?");
+        parameters.add(taskId);
         sql.append(" order by 
").append(PprofTaskLogRecord.OPERATION_TIME).append(" desc");
         return new SQLAndParameters(sql.toString(), parameters);
     }

Reply via email to