You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by GitBox <gi...@apache.org> on 2022/07/13 03:29:14 UTC

[GitHub] [skywalking] mrproliu opened a new pull request, #9337: Support eBPF Network Profiling

mrproliu opened a new pull request, #9337:
URL: https://github.com/apache/skywalking/pull/9337

   * Support `sumHistogram` in `MAL`.
   * Support query process relation level metrics.
   
   I will implement the query protocol in CLI, then create other PR for the E2E of eBPF Network Profiling. 
   
   - [ ] If this pull request closes/resolves/fixes an existing issue, replace the issue number. Closes #<issue number>.
   - [x] Update the [`CHANGES` log](https://github.com/apache/skywalking/blob/master/docs/en/changes/changes.md).
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] sonatype-lift[bot] commented on a diff in pull request #9337: Support eBPF Network Profiling

Posted by GitBox <gi...@apache.org>.
sonatype-lift[bot] commented on code in PR #9337:
URL: https://github.com/apache/skywalking/pull/9337#discussion_r919857488


##########
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/enumeration/Scope.java:
##########
@@ -34,7 +34,8 @@ public enum Scope {
     Endpoint(DefaultScopeDefine.ENDPOINT),
     ServiceRelation(DefaultScopeDefine.SERVICE_RELATION),
     ServiceInstanceRelation(DefaultScopeDefine.SERVICE_INSTANCE_RELATION),
-    EndpointRelation(DefaultScopeDefine.ENDPOINT_RELATION);
+    EndpointRelation(DefaultScopeDefine.ENDPOINT_RELATION),
+    ProcessRelation(DefaultScopeDefine.PROCESS_RELATION);
 
     @Getter
     private int scopeId;

Review Comment:
   I've recorded this as ignored for this pull request. If you change your mind, just comment `@sonatype-lift unignore`.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] sonatype-lift[bot] commented on a diff in pull request #9337: Support eBPF Network Profiling

Posted by GitBox <gi...@apache.org>.
sonatype-lift[bot] commented on code in PR #9337:
URL: https://github.com/apache/skywalking/pull/9337#discussion_r919629694


##########
oap-server/server-receiver-plugin/skywalking-ebpf-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/ebpf/provider/handler/EBPFProfilingServiceHandler.java:
##########
@@ -108,6 +111,13 @@ public void queryTasks(EBPFProfilingTaskQuery request, StreamObserver<Commands>
     }
 
     private List<EBPFProfilingTaskCommand> buildProfilingCommands(EBPFProfilingTask task, List<Process> processes) {

Review Comment:
   I've recorded this as ignored for this pull request. If you change your mind, just comment `@sonatype-lift unignore`.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] mrproliu commented on a diff in pull request #9337: Support eBPF Network Profiling

Posted by GitBox <gi...@apache.org>.
mrproliu commented on code in PR #9337:
URL: https://github.com/apache/skywalking/pull/9337#discussion_r919629669


##########
oap-server/server-receiver-plugin/skywalking-ebpf-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/ebpf/provider/handler/EBPFProfilingServiceHandler.java:
##########
@@ -108,6 +111,13 @@ public void queryTasks(EBPFProfilingTaskQuery request, StreamObserver<Commands>
     }
 
     private List<EBPFProfilingTaskCommand> buildProfilingCommands(EBPFProfilingTask task, List<Process> processes) {

Review Comment:
   @sonatype-lift ignore



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] wu-sheng commented on a diff in pull request #9337: Support eBPF Network Profiling

Posted by GitBox <gi...@apache.org>.
wu-sheng commented on code in PR #9337:
URL: https://github.com/apache/skywalking/pull/9337#discussion_r920163207


##########
docs/en/changes/changes.md:
##########
@@ -21,6 +21,10 @@
 * 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.
 * Skip loading UI templates if folder is empty or doesn't exist.
+* Support the `NETWORK` type of eBPF Profiling task.
+* Support `sumHistogram` in `MAL`.
+* [Breaking Change] Let the eBPF Profiling task support to the service instance level, please delete
+    index/table: `ebpf_profiling_task`.

Review Comment:
   OK, it is fine to keep this upgrade statement.
   Let's keep this for now.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] sonatype-lift[bot] commented on a diff in pull request #9337: Support eBPF Network Profiling

Posted by GitBox <gi...@apache.org>.
sonatype-lift[bot] commented on code in PR #9337:
URL: https://github.com/apache/skywalking/pull/9337#discussion_r919629448


##########
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/EBPFProfilingMutationService.java:
##########
@@ -101,15 +120,92 @@ public EBPFProfilingTaskCreationResult createTask(EBPFProfilingTaskFixedTimeCrea
         task.setCreateTime(current);
         task.setLastUpdateTime(current);
         task.setTimeBucket(TimeBucket.getMinuteTimeBucket(current));
+        task.generateLogicalId();
         NoneStreamProcessor.getInstance().in(task);
 
-        return EBPFProfilingTaskCreationResult.builder().status(true).id(task.id()).build();
+        return EBPFProfilingTaskCreationResult.builder().status(true).id(task.getLogicalId()).build();
+    }
+
+    public EBPFProfilingTaskCreationResult createTask(EBPFProfilingNetworkTaskRequest request) throws IOException {
+        final long current = System.currentTimeMillis();
+
+        // check request
+        final String error = checkCreateRequest(request);
+        if (StringUtil.isNotEmpty(error)) {
+            return buildError(error);
+        }
+
+        final IDManager.ServiceInstanceID.InstanceIDDefinition instanceIDDefinition =
+            IDManager.ServiceInstanceID.analysisId(request.getInstanceId());

Review Comment:
   I've recorded this as ignored for this pull request. If you change your mind, just comment `@sonatype-lift unignore`.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] mrproliu commented on a diff in pull request #9337: Support eBPF Network Profiling

Posted by GitBox <gi...@apache.org>.
mrproliu commented on code in PR #9337:
URL: https://github.com/apache/skywalking/pull/9337#discussion_r919795696


##########
docs/en/changes/changes.md:
##########
@@ -21,6 +21,10 @@
 * 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.
 * Skip loading UI templates if folder is empty or doesn't exist.
+* Support the `NETWORK` type of eBPF Profiling task.
+* Support `sumHistogram` in `MAL`.
+* [Breaking Change] Let the eBPF Profiling task support to the service instance level, please delete
+    index/table: `ebpf_profiling_task`.

Review Comment:
   No, it doesn't affect the schema, I just add a new field as a logical ID. Generating and getting logical IDs is the same as normal fields.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] mrproliu commented on a diff in pull request #9337: Support eBPF Network Profiling

Posted by GitBox <gi...@apache.org>.
mrproliu commented on code in PR #9337:
URL: https://github.com/apache/skywalking/pull/9337#discussion_r919629111


##########
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/ProcessTopologyBuilder.java:
##########
@@ -0,0 +1,135 @@
+/*
+ * 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.query;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.skywalking.oap.server.core.analysis.IDManager;
+import org.apache.skywalking.oap.server.core.analysis.manual.process.ProcessDetectType;
+import org.apache.skywalking.oap.server.core.analysis.manual.process.ProcessTraffic;
+import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics;
+import org.apache.skywalking.oap.server.core.query.type.Call;
+import org.apache.skywalking.oap.server.core.query.type.ProcessNode;
+import org.apache.skywalking.oap.server.core.query.type.ProcessTopology;
+import org.apache.skywalking.oap.server.core.source.DetectPoint;
+import org.apache.skywalking.oap.server.core.storage.IMetricsDAO;
+import org.apache.skywalking.oap.server.core.storage.StorageDAO;
+import org.apache.skywalking.oap.server.core.storage.StorageModule;
+import org.apache.skywalking.oap.server.core.storage.model.Model;
+import org.apache.skywalking.oap.server.core.storage.model.StorageModels;
+import org.apache.skywalking.oap.server.library.module.ModuleManager;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+@Slf4j
+public class ProcessTopologyBuilder {
+    private final IMetricsDAO metricsDAO;
+    private Model processTrafficModel;
+
+    public ProcessTopologyBuilder(ModuleManager moduleManager, StorageModels storageModels) {
+        final StorageDAO storageDAO = moduleManager.find(StorageModule.NAME).provider().getService(StorageDAO.class);
+        this.metricsDAO = storageDAO.newMetricsDao(new ProcessTraffic.Builder());
+        for (Model model : storageModels.allModels()) {
+            if (Objects.equals(model.getName(), ProcessTraffic.INDEX_NAME)) {
+                this.processTrafficModel = model;
+                break;
+            }
+        }
+        if (this.processTrafficModel == null) {
+            throw new IllegalStateException("could not found the process traffic model");
+        }
+    }
+
+    ProcessTopology build(List<Call.CallDetail> clientCalls,
+                          List<Call.CallDetail> serverCalls) throws IOException {
+        List<Call> calls = new LinkedList<>();
+        HashMap<String, Call> callMap = new HashMap<>();
+
+        final Set<String> sourceProcessIdList = Stream.concat(clientCalls.stream(), serverCalls.stream())
+            .map(Call.CallDetail::getSource).collect(Collectors.toSet());
+        final Set<String> destProcessIdList = Stream.concat(clientCalls.stream(), serverCalls.stream())
+            .map(Call.CallDetail::getTarget).collect(Collectors.toSet());
+        sourceProcessIdList.addAll(destProcessIdList);
+
+        // query all traffic data
+        final Map<String, ProcessNode> nodes = this.metricsDAO.multiGet(this.processTrafficModel, Stream.concat(sourceProcessIdList.stream(), destProcessIdList.stream())
+                .distinct().map(processId -> {
+                    final ProcessTraffic p = new ProcessTraffic();
+                    p.setProcessId(processId);
+                    return p;
+                }).collect(Collectors.toList())).stream()
+            .map(t -> (ProcessTraffic) t)
+            .collect(Collectors.toMap(Metrics::id, this::buildNode));
+
+        // adding client side call
+        for (Call.CallDetail clientCall : clientCalls) {
+            if (!callMap.containsKey(clientCall.getId())) {
+                Call call = new Call();
+
+                callMap.put(clientCall.getId(), call);
+                call.setSource(clientCall.getSource());
+                call.setTarget(clientCall.getTarget());
+                call.setId(clientCall.getId());
+                call.addDetectPoint(DetectPoint.CLIENT);
+                calls.add(call);
+            }
+        }
+
+        // adding server side call
+        for (Call.CallDetail serverCall : serverCalls) {
+            if (!callMap.containsKey(serverCall.getId())) {
+                Call call = new Call();
+
+                callMap.put(serverCall.getId(), call);
+                call.setSource(serverCall.getSource());
+                call.setTarget(serverCall.getTarget());
+                call.setId(serverCall.getId());
+                call.addDetectPoint(DetectPoint.SERVER);
+                calls.add(call);
+            } else {
+                Call call = callMap.get(serverCall.getId());
+                call.addDetectPoint(DetectPoint.SERVER);
+            }
+        }
+
+        ProcessTopology topology = new ProcessTopology();
+        topology.getCalls().addAll(calls);

Review Comment:
   @sonatype-lift ignore



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] mrproliu commented on a diff in pull request #9337: Support eBPF Network Profiling

Posted by GitBox <gi...@apache.org>.
mrproliu commented on code in PR #9337:
URL: https://github.com/apache/skywalking/pull/9337#discussion_r919629419


##########
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/EBPFProfilingMutationService.java:
##########
@@ -101,15 +120,92 @@ public EBPFProfilingTaskCreationResult createTask(EBPFProfilingTaskFixedTimeCrea
         task.setCreateTime(current);
         task.setLastUpdateTime(current);
         task.setTimeBucket(TimeBucket.getMinuteTimeBucket(current));
+        task.generateLogicalId();
         NoneStreamProcessor.getInstance().in(task);
 
-        return EBPFProfilingTaskCreationResult.builder().status(true).id(task.id()).build();
+        return EBPFProfilingTaskCreationResult.builder().status(true).id(task.getLogicalId()).build();
+    }
+
+    public EBPFProfilingTaskCreationResult createTask(EBPFProfilingNetworkTaskRequest request) throws IOException {
+        final long current = System.currentTimeMillis();
+
+        // check request
+        final String error = checkCreateRequest(request);
+        if (StringUtil.isNotEmpty(error)) {
+            return buildError(error);
+        }
+
+        final IDManager.ServiceInstanceID.InstanceIDDefinition instanceIDDefinition =
+            IDManager.ServiceInstanceID.analysisId(request.getInstanceId());

Review Comment:
   @sonatype-lift ignore



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] wu-sheng commented on pull request #9337: Support eBPF Network Profiling

Posted by GitBox <gi...@apache.org>.
wu-sheng commented on PR #9337:
URL: https://github.com/apache/skywalking/pull/9337#issuecomment-1183312344

   @mrproliu Notice https://github.com/apache/skywalking/pull/9339. We prefer the physical index query rather than alias query for better performance and now.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] mrproliu commented on a diff in pull request #9337: Support eBPF Network Profiling

Posted by GitBox <gi...@apache.org>.
mrproliu commented on code in PR #9337:
URL: https://github.com/apache/skywalking/pull/9337#discussion_r920155059


##########
docs/en/changes/changes.md:
##########
@@ -21,6 +21,10 @@
 * 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.
 * Skip loading UI templates if folder is empty or doesn't exist.
+* Support the `NETWORK` type of eBPF Profiling task.
+* Support `sumHistogram` in `MAL`.
+* [Breaking Change] Let the eBPF Profiling task support to the service instance level, please delete
+    index/table: `ebpf_profiling_task`.

Review Comment:
   If we don't rebuild the table, an exception will be thrown when querying the UI, because we need to use the logical ID in the query, which does not exist in the old version. Unless adding a judgment to verify whether the logical ID exists, if it does not exist, then Use primary keys. ES storage is ok, but MySQL doesn't work and I'm not sure the banyanDB works or not.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] wu-sheng commented on a diff in pull request #9337: Support eBPF Network Profiling

Posted by GitBox <gi...@apache.org>.
wu-sheng commented on code in PR #9337:
URL: https://github.com/apache/skywalking/pull/9337#discussion_r920136114


##########
docs/en/changes/changes.md:
##########
@@ -21,6 +21,10 @@
 * 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.
 * Skip loading UI templates if folder is empty or doesn't exist.
+* Support the `NETWORK` type of eBPF Profiling task.
+* Support `sumHistogram` in `MAL`.
+* [Breaking Change] Let the eBPF Profiling task support to the service instance level, please delete
+    index/table: `ebpf_profiling_task`.

Review Comment:
   What is going to happen if the previous data isn't removed? I think at least, ppl don't need to delete and re-create index, isn't it?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] mrproliu commented on a diff in pull request #9337: Support eBPF Network Profiling

Posted by GitBox <gi...@apache.org>.
mrproliu commented on code in PR #9337:
URL: https://github.com/apache/skywalking/pull/9337#discussion_r919629053


##########
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/ProcessTopologyBuilder.java:
##########
@@ -0,0 +1,135 @@
+/*
+ * 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.query;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.skywalking.oap.server.core.analysis.IDManager;
+import org.apache.skywalking.oap.server.core.analysis.manual.process.ProcessDetectType;
+import org.apache.skywalking.oap.server.core.analysis.manual.process.ProcessTraffic;
+import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics;
+import org.apache.skywalking.oap.server.core.query.type.Call;
+import org.apache.skywalking.oap.server.core.query.type.ProcessNode;
+import org.apache.skywalking.oap.server.core.query.type.ProcessTopology;
+import org.apache.skywalking.oap.server.core.source.DetectPoint;
+import org.apache.skywalking.oap.server.core.storage.IMetricsDAO;
+import org.apache.skywalking.oap.server.core.storage.StorageDAO;
+import org.apache.skywalking.oap.server.core.storage.StorageModule;
+import org.apache.skywalking.oap.server.core.storage.model.Model;
+import org.apache.skywalking.oap.server.core.storage.model.StorageModels;
+import org.apache.skywalking.oap.server.library.module.ModuleManager;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+@Slf4j
+public class ProcessTopologyBuilder {
+    private final IMetricsDAO metricsDAO;
+    private Model processTrafficModel;
+
+    public ProcessTopologyBuilder(ModuleManager moduleManager, StorageModels storageModels) {
+        final StorageDAO storageDAO = moduleManager.find(StorageModule.NAME).provider().getService(StorageDAO.class);
+        this.metricsDAO = storageDAO.newMetricsDao(new ProcessTraffic.Builder());
+        for (Model model : storageModels.allModels()) {
+            if (Objects.equals(model.getName(), ProcessTraffic.INDEX_NAME)) {
+                this.processTrafficModel = model;
+                break;
+            }
+        }
+        if (this.processTrafficModel == null) {
+            throw new IllegalStateException("could not found the process traffic model");
+        }
+    }
+
+    ProcessTopology build(List<Call.CallDetail> clientCalls,
+                          List<Call.CallDetail> serverCalls) throws IOException {
+        List<Call> calls = new LinkedList<>();
+        HashMap<String, Call> callMap = new HashMap<>();
+
+        final Set<String> sourceProcessIdList = Stream.concat(clientCalls.stream(), serverCalls.stream())
+            .map(Call.CallDetail::getSource).collect(Collectors.toSet());
+        final Set<String> destProcessIdList = Stream.concat(clientCalls.stream(), serverCalls.stream())
+            .map(Call.CallDetail::getTarget).collect(Collectors.toSet());
+        sourceProcessIdList.addAll(destProcessIdList);
+
+        // query all traffic data
+        final Map<String, ProcessNode> nodes = this.metricsDAO.multiGet(this.processTrafficModel, Stream.concat(sourceProcessIdList.stream(), destProcessIdList.stream())
+                .distinct().map(processId -> {
+                    final ProcessTraffic p = new ProcessTraffic();
+                    p.setProcessId(processId);
+                    return p;
+                }).collect(Collectors.toList())).stream()
+            .map(t -> (ProcessTraffic) t)
+            .collect(Collectors.toMap(Metrics::id, this::buildNode));
+
+        // adding client side call
+        for (Call.CallDetail clientCall : clientCalls) {
+            if (!callMap.containsKey(clientCall.getId())) {
+                Call call = new Call();
+
+                callMap.put(clientCall.getId(), call);
+                call.setSource(clientCall.getSource());
+                call.setTarget(clientCall.getTarget());
+                call.setId(clientCall.getId());
+                call.addDetectPoint(DetectPoint.CLIENT);
+                calls.add(call);
+            }
+        }
+
+        // adding server side call
+        for (Call.CallDetail serverCall : serverCalls) {
+            if (!callMap.containsKey(serverCall.getId())) {
+                Call call = new Call();
+
+                callMap.put(serverCall.getId(), call);
+                call.setSource(serverCall.getSource());
+                call.setTarget(serverCall.getTarget());
+                call.setId(serverCall.getId());
+                call.addDetectPoint(DetectPoint.SERVER);
+                calls.add(call);
+            } else {
+                Call call = callMap.get(serverCall.getId());
+                call.addDetectPoint(DetectPoint.SERVER);
+            }
+        }
+
+        ProcessTopology topology = new ProcessTopology();
+        topology.getCalls().addAll(calls);

Review Comment:
   @sonatype-lift ignore



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] sonatype-lift[bot] commented on a diff in pull request #9337: Support eBPF Network Profiling

Posted by GitBox <gi...@apache.org>.
sonatype-lift[bot] commented on code in PR #9337:
URL: https://github.com/apache/skywalking/pull/9337#discussion_r919628480


##########
oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBEBPFProfilingTaskDAO.java:
##########
@@ -42,7 +43,10 @@
 import java.util.stream.Collectors;
 
 public class BanyanDBEBPFProfilingTaskDAO extends AbstractBanyanDBDAO implements IEBPFProfilingTaskDAO {
-    private static final Set<String> TAGS = ImmutableSet.of(EBPFProfilingTaskRecord.SERVICE_ID,
+    private static final Set<String> TAGS = ImmutableSet.of(

Review Comment:
   *[MutableConstantField](https://errorprone.info/bugpattern/MutableConstantField):*  Constant field declarations should use the immutable type (such as ImmutableList) instead of the general collection interface type (such as List)
   
   
   ```suggestion
       private static final ImmutableSet<String> TAGS = ImmutableSet.of(
   ```
   
   
   
   Reply with *"**@sonatype-lift help**"* for info about LiftBot commands.
   Reply with *"**@sonatype-lift ignore**"* to tell LiftBot to leave out the above finding from this PR.
   Reply with *"**@sonatype-lift ignoreall**"* to tell LiftBot to leave out all the findings from this PR and from the status bar in Github.
   
   When talking to LiftBot, you need to **refresh** the page to see its response. [Click here](https://help.sonatype.com/lift/talking-to-lift) to get to know more about LiftBot commands.
   
   ---
   
   Was this a good recommendation?
   [ [🙁 Not relevant](https://www.sonatype.com/lift-comment-rating?comment=296500284&lift_comment_rating=1) ] - [ [😕 Won't fix](https://www.sonatype.com/lift-comment-rating?comment=296500284&lift_comment_rating=2) ] - [ [😑 Not critical, will fix](https://www.sonatype.com/lift-comment-rating?comment=296500284&lift_comment_rating=3) ] - [ [🙂 Critical, will fix](https://www.sonatype.com/lift-comment-rating?comment=296500284&lift_comment_rating=4) ] - [ [😊 Critical, fixing now](https://www.sonatype.com/lift-comment-rating?comment=296500284&lift_comment_rating=5) ]



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] mrproliu commented on a diff in pull request #9337: Support eBPF Network Profiling

Posted by GitBox <gi...@apache.org>.
mrproliu commented on code in PR #9337:
URL: https://github.com/apache/skywalking/pull/9337#discussion_r919772994


##########
docs/en/changes/changes.md:
##########
@@ -21,6 +21,10 @@
 * 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.
 * Skip loading UI templates if folder is empty or doesn't exist.
+* Support the `NETWORK` type of eBPF Profiling task.
+* Support `sumHistogram` in `MAL`.
+* [Breaking Change] Let the eBPF Profiling task support to the service instance level, please delete
+    index/table: `ebpf_profiling_task`.

Review Comment:
   Yes. We only supported tag-based profiling before, now we add the instance based. Also, we change the `ID` getting strategy. Now we use the logical ID instead of the previous data ID. 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] sonatype-lift[bot] commented on a diff in pull request #9337: Support eBPF Network Profiling

Posted by GitBox <gi...@apache.org>.
sonatype-lift[bot] commented on code in PR #9337:
URL: https://github.com/apache/skywalking/pull/9337#discussion_r919797500


##########
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/enumeration/Scope.java:
##########
@@ -34,7 +34,8 @@ public enum Scope {
     Endpoint(DefaultScopeDefine.ENDPOINT),
     ServiceRelation(DefaultScopeDefine.SERVICE_RELATION),
     ServiceInstanceRelation(DefaultScopeDefine.SERVICE_INSTANCE_RELATION),
-    EndpointRelation(DefaultScopeDefine.ENDPOINT_RELATION);
+    EndpointRelation(DefaultScopeDefine.ENDPOINT_RELATION),
+    ProcessRelation(DefaultScopeDefine.PROCESS_RELATION);
 
     @Getter
     private int scopeId;

Review Comment:
   *[ImmutableEnumChecker](https://errorprone.info/bugpattern/ImmutableEnumChecker):*  enums should be immutable: 'Scope' has non-final field 'scopeId'
   
   
   ```suggestion
       private final int scopeId;
   ```
   
   
   
   Reply with *"**@sonatype-lift help**"* for info about LiftBot commands.
   Reply with *"**@sonatype-lift ignore**"* to tell LiftBot to leave out the above finding from this PR.
   Reply with *"**@sonatype-lift ignoreall**"* to tell LiftBot to leave out all the findings from this PR and from the status bar in Github.
   
   When talking to LiftBot, you need to **refresh** the page to see its response. [Click here](https://help.sonatype.com/lift/talking-to-lift) to get to know more about LiftBot commands.
   
   ---
   
   Was this a good recommendation?
   [ [🙁 Not relevant](https://www.sonatype.com/lift-comment-rating?comment=296668385&lift_comment_rating=1) ] - [ [😕 Won't fix](https://www.sonatype.com/lift-comment-rating?comment=296668385&lift_comment_rating=2) ] - [ [😑 Not critical, will fix](https://www.sonatype.com/lift-comment-rating?comment=296668385&lift_comment_rating=3) ] - [ [🙂 Critical, will fix](https://www.sonatype.com/lift-comment-rating?comment=296668385&lift_comment_rating=4) ] - [ [😊 Critical, fixing now](https://www.sonatype.com/lift-comment-rating?comment=296668385&lift_comment_rating=5) ]



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] mrproliu commented on a diff in pull request #9337: Support eBPF Network Profiling

Posted by GitBox <gi...@apache.org>.
mrproliu commented on code in PR #9337:
URL: https://github.com/apache/skywalking/pull/9337#discussion_r919857411


##########
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/enumeration/Scope.java:
##########
@@ -34,7 +34,8 @@ public enum Scope {
     Endpoint(DefaultScopeDefine.ENDPOINT),
     ServiceRelation(DefaultScopeDefine.SERVICE_RELATION),
     ServiceInstanceRelation(DefaultScopeDefine.SERVICE_INSTANCE_RELATION),
-    EndpointRelation(DefaultScopeDefine.ENDPOINT_RELATION);
+    EndpointRelation(DefaultScopeDefine.ENDPOINT_RELATION),
+    ProcessRelation(DefaultScopeDefine.PROCESS_RELATION);
 
     @Getter
     private int scopeId;

Review Comment:
   @sonatype-lift ignore



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] sonatype-lift[bot] commented on a diff in pull request #9337: Support eBPF Network Profiling

Posted by GitBox <gi...@apache.org>.
sonatype-lift[bot] commented on code in PR #9337:
URL: https://github.com/apache/skywalking/pull/9337#discussion_r919629561


##########
oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBEBPFProfilingTaskDAO.java:
##########
@@ -42,7 +43,10 @@
 import java.util.stream.Collectors;
 
 public class BanyanDBEBPFProfilingTaskDAO extends AbstractBanyanDBDAO implements IEBPFProfilingTaskDAO {
-    private static final Set<String> TAGS = ImmutableSet.of(EBPFProfilingTaskRecord.SERVICE_ID,
+    private static final Set<String> TAGS = ImmutableSet.of(

Review Comment:
   I've recorded this as ignored for this pull request. If you change your mind, just comment `@sonatype-lift unignore`.



##########
oap-server/server-receiver-plugin/skywalking-ebpf-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/ebpf/provider/handler/EBPFProfilingServiceHandler.java:
##########
@@ -108,6 +111,13 @@ public void queryTasks(EBPFProfilingTaskQuery request, StreamObserver<Commands>
     }
 
     private List<EBPFProfilingTaskCommand> buildProfilingCommands(EBPFProfilingTask task, List<Process> processes) {

Review Comment:
   I've recorded this as ignored for this pull request. If you change your mind, just comment `@sonatype-lift unignore`.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] wu-sheng merged pull request #9337: Support eBPF Network Profiling

Posted by GitBox <gi...@apache.org>.
wu-sheng merged PR #9337:
URL: https://github.com/apache/skywalking/pull/9337


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] wu-sheng commented on a diff in pull request #9337: Support eBPF Network Profiling

Posted by GitBox <gi...@apache.org>.
wu-sheng commented on code in PR #9337:
URL: https://github.com/apache/skywalking/pull/9337#discussion_r919791797


##########
docs/en/changes/changes.md:
##########
@@ -21,6 +21,10 @@
 * 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.
 * Skip loading UI templates if folder is empty or doesn't exist.
+* Support the `NETWORK` type of eBPF Profiling task.
+* Support `sumHistogram` in `MAL`.
+* [Breaking Change] Let the eBPF Profiling task support to the service instance level, please delete
+    index/table: `ebpf_profiling_task`.

Review Comment:
   > we change the ID getting strategy.
   
   About this, I think the breaking is only relative to the previous data, or really affects the index/alias/table schema?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] mrproliu commented on a diff in pull request #9337: Support eBPF Network Profiling

Posted by GitBox <gi...@apache.org>.
mrproliu commented on code in PR #9337:
URL: https://github.com/apache/skywalking/pull/9337#discussion_r919629548


##########
oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBEBPFProfilingTaskDAO.java:
##########
@@ -42,7 +43,10 @@
 import java.util.stream.Collectors;
 
 public class BanyanDBEBPFProfilingTaskDAO extends AbstractBanyanDBDAO implements IEBPFProfilingTaskDAO {
-    private static final Set<String> TAGS = ImmutableSet.of(EBPFProfilingTaskRecord.SERVICE_ID,
+    private static final Set<String> TAGS = ImmutableSet.of(

Review Comment:
   @sonatype-lift ignore



##########
oap-server/server-receiver-plugin/skywalking-ebpf-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/ebpf/provider/handler/EBPFProfilingServiceHandler.java:
##########
@@ -108,6 +111,13 @@ public void queryTasks(EBPFProfilingTaskQuery request, StreamObserver<Commands>
     }
 
     private List<EBPFProfilingTaskCommand> buildProfilingCommands(EBPFProfilingTask task, List<Process> processes) {

Review Comment:
   @sonatype-lift ignore



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] sonatype-lift[bot] commented on a diff in pull request #9337: Support eBPF Network Profiling

Posted by GitBox <gi...@apache.org>.
sonatype-lift[bot] commented on code in PR #9337:
URL: https://github.com/apache/skywalking/pull/9337#discussion_r919628245


##########
oap-server/server-receiver-plugin/skywalking-ebpf-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/ebpf/provider/handler/EBPFProfilingServiceHandler.java:
##########
@@ -108,6 +111,13 @@ public void queryTasks(EBPFProfilingTaskQuery request, StreamObserver<Commands>
     }
 
     private List<EBPFProfilingTaskCommand> buildProfilingCommands(EBPFProfilingTask task, List<Process> processes) {

Review Comment:
   *[MixedMutabilityReturnType](https://errorprone.info/bugpattern/MixedMutabilityReturnType):*  This method returns both mutable and immutable collections or maps from different paths. This may be confusing for users of the method.
   
   
   ```suggestion
       private ImmutableList<EBPFProfilingTaskCommand> buildProfilingCommands(EBPFProfilingTask task, List<Process> processes) {
   ```
   
   
   
   Reply with *"**@sonatype-lift help**"* for info about LiftBot commands.
   Reply with *"**@sonatype-lift ignore**"* to tell LiftBot to leave out the above finding from this PR.
   Reply with *"**@sonatype-lift ignoreall**"* to tell LiftBot to leave out all the findings from this PR and from the status bar in Github.
   
   When talking to LiftBot, you need to **refresh** the page to see its response. [Click here](https://help.sonatype.com/lift/talking-to-lift) to get to know more about LiftBot commands.
   
   ---
   
   Was this a good recommendation?
   [ [🙁 Not relevant](https://www.sonatype.com/lift-comment-rating?comment=296497927&lift_comment_rating=1) ] - [ [😕 Won't fix](https://www.sonatype.com/lift-comment-rating?comment=296497927&lift_comment_rating=2) ] - [ [😑 Not critical, will fix](https://www.sonatype.com/lift-comment-rating?comment=296497927&lift_comment_rating=3) ] - [ [🙂 Critical, will fix](https://www.sonatype.com/lift-comment-rating?comment=296497927&lift_comment_rating=4) ] - [ [😊 Critical, fixing now](https://www.sonatype.com/lift-comment-rating?comment=296497927&lift_comment_rating=5) ]



##########
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/ProcessTopologyBuilder.java:
##########
@@ -0,0 +1,135 @@
+/*
+ * 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.query;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.skywalking.oap.server.core.analysis.IDManager;
+import org.apache.skywalking.oap.server.core.analysis.manual.process.ProcessDetectType;
+import org.apache.skywalking.oap.server.core.analysis.manual.process.ProcessTraffic;
+import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics;
+import org.apache.skywalking.oap.server.core.query.type.Call;
+import org.apache.skywalking.oap.server.core.query.type.ProcessNode;
+import org.apache.skywalking.oap.server.core.query.type.ProcessTopology;
+import org.apache.skywalking.oap.server.core.source.DetectPoint;
+import org.apache.skywalking.oap.server.core.storage.IMetricsDAO;
+import org.apache.skywalking.oap.server.core.storage.StorageDAO;
+import org.apache.skywalking.oap.server.core.storage.StorageModule;
+import org.apache.skywalking.oap.server.core.storage.model.Model;
+import org.apache.skywalking.oap.server.core.storage.model.StorageModels;
+import org.apache.skywalking.oap.server.library.module.ModuleManager;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+@Slf4j
+public class ProcessTopologyBuilder {
+    private final IMetricsDAO metricsDAO;
+    private Model processTrafficModel;
+
+    public ProcessTopologyBuilder(ModuleManager moduleManager, StorageModels storageModels) {
+        final StorageDAO storageDAO = moduleManager.find(StorageModule.NAME).provider().getService(StorageDAO.class);
+        this.metricsDAO = storageDAO.newMetricsDao(new ProcessTraffic.Builder());
+        for (Model model : storageModels.allModels()) {
+            if (Objects.equals(model.getName(), ProcessTraffic.INDEX_NAME)) {
+                this.processTrafficModel = model;
+                break;
+            }
+        }
+        if (this.processTrafficModel == null) {
+            throw new IllegalStateException("could not found the process traffic model");
+        }
+    }
+
+    ProcessTopology build(List<Call.CallDetail> clientCalls,
+                          List<Call.CallDetail> serverCalls) throws IOException {
+        List<Call> calls = new LinkedList<>();
+        HashMap<String, Call> callMap = new HashMap<>();
+
+        final Set<String> sourceProcessIdList = Stream.concat(clientCalls.stream(), serverCalls.stream())
+            .map(Call.CallDetail::getSource).collect(Collectors.toSet());
+        final Set<String> destProcessIdList = Stream.concat(clientCalls.stream(), serverCalls.stream())
+            .map(Call.CallDetail::getTarget).collect(Collectors.toSet());
+        sourceProcessIdList.addAll(destProcessIdList);
+
+        // query all traffic data
+        final Map<String, ProcessNode> nodes = this.metricsDAO.multiGet(this.processTrafficModel, Stream.concat(sourceProcessIdList.stream(), destProcessIdList.stream())
+                .distinct().map(processId -> {
+                    final ProcessTraffic p = new ProcessTraffic();
+                    p.setProcessId(processId);
+                    return p;
+                }).collect(Collectors.toList())).stream()
+            .map(t -> (ProcessTraffic) t)
+            .collect(Collectors.toMap(Metrics::id, this::buildNode));
+
+        // adding client side call
+        for (Call.CallDetail clientCall : clientCalls) {
+            if (!callMap.containsKey(clientCall.getId())) {
+                Call call = new Call();
+
+                callMap.put(clientCall.getId(), call);
+                call.setSource(clientCall.getSource());
+                call.setTarget(clientCall.getTarget());
+                call.setId(clientCall.getId());
+                call.addDetectPoint(DetectPoint.CLIENT);
+                calls.add(call);
+            }
+        }
+
+        // adding server side call
+        for (Call.CallDetail serverCall : serverCalls) {
+            if (!callMap.containsKey(serverCall.getId())) {
+                Call call = new Call();
+
+                callMap.put(serverCall.getId(), call);
+                call.setSource(serverCall.getSource());
+                call.setTarget(serverCall.getTarget());
+                call.setId(serverCall.getId());
+                call.addDetectPoint(DetectPoint.SERVER);
+                calls.add(call);
+            } else {
+                Call call = callMap.get(serverCall.getId());
+                call.addDetectPoint(DetectPoint.SERVER);
+            }
+        }
+
+        ProcessTopology topology = new ProcessTopology();
+        topology.getCalls().addAll(calls);

Review Comment:
   *NULL_DEREFERENCE:*  object returned by `getCalls(topology)` could be null and is dereferenced at line 119.
   
   Reply with *"**@sonatype-lift help**"* for info about LiftBot commands.
   Reply with *"**@sonatype-lift ignore**"* to tell LiftBot to leave out the above finding from this PR.
   Reply with *"**@sonatype-lift ignoreall**"* to tell LiftBot to leave out all the findings from this PR and from the status bar in Github.
   
   When talking to LiftBot, you need to **refresh** the page to see its response. [Click here](https://help.sonatype.com/lift/talking-to-lift) to get to know more about LiftBot commands.
   
   ---
   
   Was this a good recommendation?
   [ [🙁 Not relevant](https://www.sonatype.com/lift-comment-rating?comment=296497980&lift_comment_rating=1) ] - [ [😕 Won't fix](https://www.sonatype.com/lift-comment-rating?comment=296497980&lift_comment_rating=2) ] - [ [😑 Not critical, will fix](https://www.sonatype.com/lift-comment-rating?comment=296497980&lift_comment_rating=3) ] - [ [🙂 Critical, will fix](https://www.sonatype.com/lift-comment-rating?comment=296497980&lift_comment_rating=4) ] - [ [😊 Critical, fixing now](https://www.sonatype.com/lift-comment-rating?comment=296497980&lift_comment_rating=5) ]



##########
oap-server/server-receiver-plugin/skywalking-ebpf-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/ebpf/provider/handler/EBPFProfilingServiceHandler.java:
##########
@@ -108,6 +111,13 @@ public void queryTasks(EBPFProfilingTaskQuery request, StreamObserver<Commands>
     }
 
     private List<EBPFProfilingTaskCommand> buildProfilingCommands(EBPFProfilingTask task, List<Process> processes) {

Review Comment:
   *[MixedMutabilityReturnType](https://errorprone.info/bugpattern/MixedMutabilityReturnType):*  This method returns both mutable and immutable collections or maps from different paths. This may be confusing for users of the method.
   
   
   ```suggestion
       private ImmutableList<EBPFProfilingTaskCommand> buildProfilingCommands(EBPFProfilingTask task, List<Process> processes) {
   ```
   
   
   
   Reply with *"**@sonatype-lift help**"* for info about LiftBot commands.
   Reply with *"**@sonatype-lift ignore**"* to tell LiftBot to leave out the above finding from this PR.
   Reply with *"**@sonatype-lift ignoreall**"* to tell LiftBot to leave out all the findings from this PR and from the status bar in Github.
   
   When talking to LiftBot, you need to **refresh** the page to see its response. [Click here](https://help.sonatype.com/lift/talking-to-lift) to get to know more about LiftBot commands.
   
   ---
   
   Was this a good recommendation?
   [ [🙁 Not relevant](https://www.sonatype.com/lift-comment-rating?comment=296498366&lift_comment_rating=1) ] - [ [😕 Won't fix](https://www.sonatype.com/lift-comment-rating?comment=296498366&lift_comment_rating=2) ] - [ [😑 Not critical, will fix](https://www.sonatype.com/lift-comment-rating?comment=296498366&lift_comment_rating=3) ] - [ [🙂 Critical, will fix](https://www.sonatype.com/lift-comment-rating?comment=296498366&lift_comment_rating=4) ] - [ [😊 Critical, fixing now](https://www.sonatype.com/lift-comment-rating?comment=296498366&lift_comment_rating=5) ]



##########
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/ProcessTopologyBuilder.java:
##########
@@ -0,0 +1,135 @@
+/*
+ * 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.query;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.skywalking.oap.server.core.analysis.IDManager;
+import org.apache.skywalking.oap.server.core.analysis.manual.process.ProcessDetectType;
+import org.apache.skywalking.oap.server.core.analysis.manual.process.ProcessTraffic;
+import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics;
+import org.apache.skywalking.oap.server.core.query.type.Call;
+import org.apache.skywalking.oap.server.core.query.type.ProcessNode;
+import org.apache.skywalking.oap.server.core.query.type.ProcessTopology;
+import org.apache.skywalking.oap.server.core.source.DetectPoint;
+import org.apache.skywalking.oap.server.core.storage.IMetricsDAO;
+import org.apache.skywalking.oap.server.core.storage.StorageDAO;
+import org.apache.skywalking.oap.server.core.storage.StorageModule;
+import org.apache.skywalking.oap.server.core.storage.model.Model;
+import org.apache.skywalking.oap.server.core.storage.model.StorageModels;
+import org.apache.skywalking.oap.server.library.module.ModuleManager;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+@Slf4j
+public class ProcessTopologyBuilder {
+    private final IMetricsDAO metricsDAO;
+    private Model processTrafficModel;
+
+    public ProcessTopologyBuilder(ModuleManager moduleManager, StorageModels storageModels) {
+        final StorageDAO storageDAO = moduleManager.find(StorageModule.NAME).provider().getService(StorageDAO.class);
+        this.metricsDAO = storageDAO.newMetricsDao(new ProcessTraffic.Builder());
+        for (Model model : storageModels.allModels()) {
+            if (Objects.equals(model.getName(), ProcessTraffic.INDEX_NAME)) {
+                this.processTrafficModel = model;
+                break;
+            }
+        }
+        if (this.processTrafficModel == null) {
+            throw new IllegalStateException("could not found the process traffic model");
+        }
+    }
+
+    ProcessTopology build(List<Call.CallDetail> clientCalls,
+                          List<Call.CallDetail> serverCalls) throws IOException {
+        List<Call> calls = new LinkedList<>();
+        HashMap<String, Call> callMap = new HashMap<>();
+
+        final Set<String> sourceProcessIdList = Stream.concat(clientCalls.stream(), serverCalls.stream())
+            .map(Call.CallDetail::getSource).collect(Collectors.toSet());
+        final Set<String> destProcessIdList = Stream.concat(clientCalls.stream(), serverCalls.stream())
+            .map(Call.CallDetail::getTarget).collect(Collectors.toSet());
+        sourceProcessIdList.addAll(destProcessIdList);
+
+        // query all traffic data
+        final Map<String, ProcessNode> nodes = this.metricsDAO.multiGet(this.processTrafficModel, Stream.concat(sourceProcessIdList.stream(), destProcessIdList.stream())
+                .distinct().map(processId -> {
+                    final ProcessTraffic p = new ProcessTraffic();
+                    p.setProcessId(processId);
+                    return p;
+                }).collect(Collectors.toList())).stream()
+            .map(t -> (ProcessTraffic) t)
+            .collect(Collectors.toMap(Metrics::id, this::buildNode));
+
+        // adding client side call
+        for (Call.CallDetail clientCall : clientCalls) {
+            if (!callMap.containsKey(clientCall.getId())) {
+                Call call = new Call();
+
+                callMap.put(clientCall.getId(), call);
+                call.setSource(clientCall.getSource());
+                call.setTarget(clientCall.getTarget());
+                call.setId(clientCall.getId());
+                call.addDetectPoint(DetectPoint.CLIENT);
+                calls.add(call);
+            }
+        }
+
+        // adding server side call
+        for (Call.CallDetail serverCall : serverCalls) {
+            if (!callMap.containsKey(serverCall.getId())) {
+                Call call = new Call();
+
+                callMap.put(serverCall.getId(), call);
+                call.setSource(serverCall.getSource());
+                call.setTarget(serverCall.getTarget());
+                call.setId(serverCall.getId());
+                call.addDetectPoint(DetectPoint.SERVER);
+                calls.add(call);
+            } else {
+                Call call = callMap.get(serverCall.getId());
+                call.addDetectPoint(DetectPoint.SERVER);
+            }
+        }
+
+        ProcessTopology topology = new ProcessTopology();
+        topology.getCalls().addAll(calls);

Review Comment:
   *NULL_DEREFERENCE:*  object returned by `getCalls(topology)` could be null and is dereferenced at line 119.
   
   Reply with *"**@sonatype-lift help**"* for info about LiftBot commands.
   Reply with *"**@sonatype-lift ignore**"* to tell LiftBot to leave out the above finding from this PR.
   Reply with *"**@sonatype-lift ignoreall**"* to tell LiftBot to leave out all the findings from this PR and from the status bar in Github.
   
   When talking to LiftBot, you need to **refresh** the page to see its response. [Click here](https://help.sonatype.com/lift/talking-to-lift) to get to know more about LiftBot commands.
   
   ---
   
   Was this a good recommendation?
   [ [🙁 Not relevant](https://www.sonatype.com/lift-comment-rating?comment=296498466&lift_comment_rating=1) ] - [ [😕 Won't fix](https://www.sonatype.com/lift-comment-rating?comment=296498466&lift_comment_rating=2) ] - [ [😑 Not critical, will fix](https://www.sonatype.com/lift-comment-rating?comment=296498466&lift_comment_rating=3) ] - [ [🙂 Critical, will fix](https://www.sonatype.com/lift-comment-rating?comment=296498466&lift_comment_rating=4) ] - [ [😊 Critical, fixing now](https://www.sonatype.com/lift-comment-rating?comment=296498466&lift_comment_rating=5) ]



##########
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/EBPFProfilingMutationService.java:
##########
@@ -101,15 +120,92 @@ public EBPFProfilingTaskCreationResult createTask(EBPFProfilingTaskFixedTimeCrea
         task.setCreateTime(current);
         task.setLastUpdateTime(current);
         task.setTimeBucket(TimeBucket.getMinuteTimeBucket(current));
+        task.generateLogicalId();
         NoneStreamProcessor.getInstance().in(task);
 
-        return EBPFProfilingTaskCreationResult.builder().status(true).id(task.id()).build();
+        return EBPFProfilingTaskCreationResult.builder().status(true).id(task.getLogicalId()).build();
+    }
+
+    public EBPFProfilingTaskCreationResult createTask(EBPFProfilingNetworkTaskRequest request) throws IOException {
+        final long current = System.currentTimeMillis();
+
+        // check request
+        final String error = checkCreateRequest(request);
+        if (StringUtil.isNotEmpty(error)) {
+            return buildError(error);
+        }
+
+        final IDManager.ServiceInstanceID.InstanceIDDefinition instanceIDDefinition =
+            IDManager.ServiceInstanceID.analysisId(request.getInstanceId());

Review Comment:
   *NULL_DEREFERENCE:*  object returned by `request.getInstanceId()` could be null and is dereferenced by call to `analysisId(...)` at line 139.
   
   Reply with *"**@sonatype-lift help**"* for info about LiftBot commands.
   Reply with *"**@sonatype-lift ignore**"* to tell LiftBot to leave out the above finding from this PR.
   Reply with *"**@sonatype-lift ignoreall**"* to tell LiftBot to leave out all the findings from this PR and from the status bar in Github.
   
   When talking to LiftBot, you need to **refresh** the page to see its response. [Click here](https://help.sonatype.com/lift/talking-to-lift) to get to know more about LiftBot commands.
   
   ---
   
   Was this a good recommendation?
   [ [🙁 Not relevant](https://www.sonatype.com/lift-comment-rating?comment=296498486&lift_comment_rating=1) ] - [ [😕 Won't fix](https://www.sonatype.com/lift-comment-rating?comment=296498486&lift_comment_rating=2) ] - [ [😑 Not critical, will fix](https://www.sonatype.com/lift-comment-rating?comment=296498486&lift_comment_rating=3) ] - [ [🙂 Critical, will fix](https://www.sonatype.com/lift-comment-rating?comment=296498486&lift_comment_rating=4) ] - [ [😊 Critical, fixing now](https://www.sonatype.com/lift-comment-rating?comment=296498486&lift_comment_rating=5) ]



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] sonatype-lift[bot] commented on a diff in pull request #9337: Support eBPF Network Profiling

Posted by GitBox <gi...@apache.org>.
sonatype-lift[bot] commented on code in PR #9337:
URL: https://github.com/apache/skywalking/pull/9337#discussion_r919629067


##########
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/ProcessTopologyBuilder.java:
##########
@@ -0,0 +1,135 @@
+/*
+ * 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.query;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.skywalking.oap.server.core.analysis.IDManager;
+import org.apache.skywalking.oap.server.core.analysis.manual.process.ProcessDetectType;
+import org.apache.skywalking.oap.server.core.analysis.manual.process.ProcessTraffic;
+import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics;
+import org.apache.skywalking.oap.server.core.query.type.Call;
+import org.apache.skywalking.oap.server.core.query.type.ProcessNode;
+import org.apache.skywalking.oap.server.core.query.type.ProcessTopology;
+import org.apache.skywalking.oap.server.core.source.DetectPoint;
+import org.apache.skywalking.oap.server.core.storage.IMetricsDAO;
+import org.apache.skywalking.oap.server.core.storage.StorageDAO;
+import org.apache.skywalking.oap.server.core.storage.StorageModule;
+import org.apache.skywalking.oap.server.core.storage.model.Model;
+import org.apache.skywalking.oap.server.core.storage.model.StorageModels;
+import org.apache.skywalking.oap.server.library.module.ModuleManager;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+@Slf4j
+public class ProcessTopologyBuilder {
+    private final IMetricsDAO metricsDAO;
+    private Model processTrafficModel;
+
+    public ProcessTopologyBuilder(ModuleManager moduleManager, StorageModels storageModels) {
+        final StorageDAO storageDAO = moduleManager.find(StorageModule.NAME).provider().getService(StorageDAO.class);
+        this.metricsDAO = storageDAO.newMetricsDao(new ProcessTraffic.Builder());
+        for (Model model : storageModels.allModels()) {
+            if (Objects.equals(model.getName(), ProcessTraffic.INDEX_NAME)) {
+                this.processTrafficModel = model;
+                break;
+            }
+        }
+        if (this.processTrafficModel == null) {
+            throw new IllegalStateException("could not found the process traffic model");
+        }
+    }
+
+    ProcessTopology build(List<Call.CallDetail> clientCalls,
+                          List<Call.CallDetail> serverCalls) throws IOException {
+        List<Call> calls = new LinkedList<>();
+        HashMap<String, Call> callMap = new HashMap<>();
+
+        final Set<String> sourceProcessIdList = Stream.concat(clientCalls.stream(), serverCalls.stream())
+            .map(Call.CallDetail::getSource).collect(Collectors.toSet());
+        final Set<String> destProcessIdList = Stream.concat(clientCalls.stream(), serverCalls.stream())
+            .map(Call.CallDetail::getTarget).collect(Collectors.toSet());
+        sourceProcessIdList.addAll(destProcessIdList);
+
+        // query all traffic data
+        final Map<String, ProcessNode> nodes = this.metricsDAO.multiGet(this.processTrafficModel, Stream.concat(sourceProcessIdList.stream(), destProcessIdList.stream())
+                .distinct().map(processId -> {
+                    final ProcessTraffic p = new ProcessTraffic();
+                    p.setProcessId(processId);
+                    return p;
+                }).collect(Collectors.toList())).stream()
+            .map(t -> (ProcessTraffic) t)
+            .collect(Collectors.toMap(Metrics::id, this::buildNode));
+
+        // adding client side call
+        for (Call.CallDetail clientCall : clientCalls) {
+            if (!callMap.containsKey(clientCall.getId())) {
+                Call call = new Call();
+
+                callMap.put(clientCall.getId(), call);
+                call.setSource(clientCall.getSource());
+                call.setTarget(clientCall.getTarget());
+                call.setId(clientCall.getId());
+                call.addDetectPoint(DetectPoint.CLIENT);
+                calls.add(call);
+            }
+        }
+
+        // adding server side call
+        for (Call.CallDetail serverCall : serverCalls) {
+            if (!callMap.containsKey(serverCall.getId())) {
+                Call call = new Call();
+
+                callMap.put(serverCall.getId(), call);
+                call.setSource(serverCall.getSource());
+                call.setTarget(serverCall.getTarget());
+                call.setId(serverCall.getId());
+                call.addDetectPoint(DetectPoint.SERVER);
+                calls.add(call);
+            } else {
+                Call call = callMap.get(serverCall.getId());
+                call.addDetectPoint(DetectPoint.SERVER);
+            }
+        }
+
+        ProcessTopology topology = new ProcessTopology();
+        topology.getCalls().addAll(calls);

Review Comment:
   I've recorded this as ignored for this pull request. If you change your mind, just comment `@sonatype-lift unignore`.



##########
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/ProcessTopologyBuilder.java:
##########
@@ -0,0 +1,135 @@
+/*
+ * 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.query;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.skywalking.oap.server.core.analysis.IDManager;
+import org.apache.skywalking.oap.server.core.analysis.manual.process.ProcessDetectType;
+import org.apache.skywalking.oap.server.core.analysis.manual.process.ProcessTraffic;
+import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics;
+import org.apache.skywalking.oap.server.core.query.type.Call;
+import org.apache.skywalking.oap.server.core.query.type.ProcessNode;
+import org.apache.skywalking.oap.server.core.query.type.ProcessTopology;
+import org.apache.skywalking.oap.server.core.source.DetectPoint;
+import org.apache.skywalking.oap.server.core.storage.IMetricsDAO;
+import org.apache.skywalking.oap.server.core.storage.StorageDAO;
+import org.apache.skywalking.oap.server.core.storage.StorageModule;
+import org.apache.skywalking.oap.server.core.storage.model.Model;
+import org.apache.skywalking.oap.server.core.storage.model.StorageModels;
+import org.apache.skywalking.oap.server.library.module.ModuleManager;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+@Slf4j
+public class ProcessTopologyBuilder {
+    private final IMetricsDAO metricsDAO;
+    private Model processTrafficModel;
+
+    public ProcessTopologyBuilder(ModuleManager moduleManager, StorageModels storageModels) {
+        final StorageDAO storageDAO = moduleManager.find(StorageModule.NAME).provider().getService(StorageDAO.class);
+        this.metricsDAO = storageDAO.newMetricsDao(new ProcessTraffic.Builder());
+        for (Model model : storageModels.allModels()) {
+            if (Objects.equals(model.getName(), ProcessTraffic.INDEX_NAME)) {
+                this.processTrafficModel = model;
+                break;
+            }
+        }
+        if (this.processTrafficModel == null) {
+            throw new IllegalStateException("could not found the process traffic model");
+        }
+    }
+
+    ProcessTopology build(List<Call.CallDetail> clientCalls,
+                          List<Call.CallDetail> serverCalls) throws IOException {
+        List<Call> calls = new LinkedList<>();
+        HashMap<String, Call> callMap = new HashMap<>();
+
+        final Set<String> sourceProcessIdList = Stream.concat(clientCalls.stream(), serverCalls.stream())
+            .map(Call.CallDetail::getSource).collect(Collectors.toSet());
+        final Set<String> destProcessIdList = Stream.concat(clientCalls.stream(), serverCalls.stream())
+            .map(Call.CallDetail::getTarget).collect(Collectors.toSet());
+        sourceProcessIdList.addAll(destProcessIdList);
+
+        // query all traffic data
+        final Map<String, ProcessNode> nodes = this.metricsDAO.multiGet(this.processTrafficModel, Stream.concat(sourceProcessIdList.stream(), destProcessIdList.stream())
+                .distinct().map(processId -> {
+                    final ProcessTraffic p = new ProcessTraffic();
+                    p.setProcessId(processId);
+                    return p;
+                }).collect(Collectors.toList())).stream()
+            .map(t -> (ProcessTraffic) t)
+            .collect(Collectors.toMap(Metrics::id, this::buildNode));
+
+        // adding client side call
+        for (Call.CallDetail clientCall : clientCalls) {
+            if (!callMap.containsKey(clientCall.getId())) {
+                Call call = new Call();
+
+                callMap.put(clientCall.getId(), call);
+                call.setSource(clientCall.getSource());
+                call.setTarget(clientCall.getTarget());
+                call.setId(clientCall.getId());
+                call.addDetectPoint(DetectPoint.CLIENT);
+                calls.add(call);
+            }
+        }
+
+        // adding server side call
+        for (Call.CallDetail serverCall : serverCalls) {
+            if (!callMap.containsKey(serverCall.getId())) {
+                Call call = new Call();
+
+                callMap.put(serverCall.getId(), call);
+                call.setSource(serverCall.getSource());
+                call.setTarget(serverCall.getTarget());
+                call.setId(serverCall.getId());
+                call.addDetectPoint(DetectPoint.SERVER);
+                calls.add(call);
+            } else {
+                Call call = callMap.get(serverCall.getId());
+                call.addDetectPoint(DetectPoint.SERVER);
+            }
+        }
+
+        ProcessTopology topology = new ProcessTopology();
+        topology.getCalls().addAll(calls);

Review Comment:
   I've recorded this as ignored for this pull request. If you change your mind, just comment `@sonatype-lift unignore`.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] wu-sheng commented on a diff in pull request #9337: Support eBPF Network Profiling

Posted by GitBox <gi...@apache.org>.
wu-sheng commented on code in PR #9337:
URL: https://github.com/apache/skywalking/pull/9337#discussion_r919768338


##########
docs/en/changes/changes.md:
##########
@@ -21,6 +21,10 @@
 * 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.
 * Skip loading UI templates if folder is empty or doesn't exist.
+* Support the `NETWORK` type of eBPF Profiling task.
+* Support `sumHistogram` in `MAL`.
+* [Breaking Change] Let the eBPF Profiling task support to the service instance level, please delete
+    index/table: `ebpf_profiling_task`.

Review Comment:
   Is this `breaking change` description precisely? 
   Do you mean we only supported tag based profiling before



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] wu-sheng commented on a diff in pull request #9337: Support eBPF Network Profiling

Posted by GitBox <gi...@apache.org>.
wu-sheng commented on code in PR #9337:
URL: https://github.com/apache/skywalking/pull/9337#discussion_r919791111


##########
docs/en/changes/changes.md:
##########
@@ -21,6 +21,10 @@
 * 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.
 * Skip loading UI templates if folder is empty or doesn't exist.
+* Support the `NETWORK` type of eBPF Profiling task.
+* Support `sumHistogram` in `MAL`.
+* [Breaking Change] Let the eBPF Profiling task support to the service instance level, please delete
+    index/table: `ebpf_profiling_task`.

Review Comment:
   ```suggestion
   * [Breaking Change] Make the eBPF Profiling task support to the service instance level, index/table `ebpf_profiling_task` is required to be re-created when bump up from previous releases.
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org