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

sanpwc pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new ae982d7fea IGNITE-22310 Do not log slow network processing in storage 
threads (#4079)
ae982d7fea is described below

commit ae982d7feaa50178a0e1653191f47dc568d1f78a
Author: Cyrill <cyrill.si...@gmail.com>
AuthorDate: Mon Jul 15 10:57:14 2024 +0300

    IGNITE-22310 Do not log slow network processing in storage threads (#4079)
---
 .../network/TrackableNetworkMessageHandler.java    | 23 +++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git 
a/modules/network-api/src/main/java/org/apache/ignite/internal/network/TrackableNetworkMessageHandler.java
 
b/modules/network-api/src/main/java/org/apache/ignite/internal/network/TrackableNetworkMessageHandler.java
index d5efd14d13..1b31d5f7d5 100644
--- 
a/modules/network-api/src/main/java/org/apache/ignite/internal/network/TrackableNetworkMessageHandler.java
+++ 
b/modules/network-api/src/main/java/org/apache/ignite/internal/network/TrackableNetworkMessageHandler.java
@@ -19,9 +19,12 @@ package org.apache.ignite.internal.network;
 
 import static 
org.apache.ignite.internal.tostring.IgniteToStringBuilder.includeSensitive;
 
+import java.util.Set;
 import java.util.concurrent.TimeUnit;
 import org.apache.ignite.internal.logger.IgniteLogger;
 import org.apache.ignite.internal.logger.Loggers;
+import org.apache.ignite.internal.thread.ThreadAttributes;
+import org.apache.ignite.internal.thread.ThreadOperation;
 import org.apache.ignite.network.ClusterNode;
 import org.jetbrains.annotations.Nullable;
 
@@ -48,7 +51,25 @@ public class TrackableNetworkMessageHandler implements 
NetworkMessageHandler {
 
         targetHandler.onReceived(message, sender, correlationId);
 
-        maybeLogLongProcessing(message, startTimeNanos);
+        if (!storageThread()) {
+            maybeLogLongProcessing(message, startTimeNanos);
+        }
+    }
+
+    private static boolean storageThread() {
+        Thread currentThread = Thread.currentThread();
+
+        if (!(currentThread instanceof ThreadAttributes)) {
+            return false;
+        }
+
+        ThreadAttributes current = (ThreadAttributes) currentThread;
+
+        Set<ThreadOperation> allowedOperations = current.allowedOperations();
+
+        return allowedOperations.contains(ThreadOperation.STORAGE_READ)
+                || allowedOperations.contains(ThreadOperation.STORAGE_WRITE)
+                || 
allowedOperations.contains(ThreadOperation.TX_STATE_STORAGE_ACCESS);
     }
 
     private static void maybeLogLongProcessing(NetworkMessage message, long 
startTimeNanos) {

Reply via email to