You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by tl...@apache.org on 2021/01/19 10:32:02 UTC

[ignite] branch ignite-2.10 updated: IGNITE-13624 Extend tracing of communication socket write with number of sent bytes (#8396)

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

tledkov pushed a commit to branch ignite-2.10
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/ignite-2.10 by this push:
     new f1be12b  IGNITE-13624 Extend tracing of communication socket write with number of sent bytes (#8396)
f1be12b is described below

commit f1be12b434d8de718f9e146a40ee0b00172d6aed
Author: Mikhail Petrov <pm...@gmail.com>
AuthorDate: Tue Jan 19 13:26:22 2021 +0300

    IGNITE-13624 Extend tracing of communication socket write with number of sent bytes (#8396)
    
    (cherry picked from commit 80eada9df37c6738a6513bd2aa7411d04d93c040)
---
 .../apache/ignite/internal/processors/tracing/SpanTags.java  |  3 +++
 .../org/apache/ignite/internal/util/nio/GridNioServer.java   | 11 +++++++++++
 .../monitoring/opencensus/OpenCensusTracingSpiTest.java      | 12 +++++++++++-
 3 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/SpanTags.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/SpanTags.java
index c2f37a6..38327f4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/SpanTags.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/SpanTags.java
@@ -81,6 +81,9 @@ public class SpanTags {
     /** */
     public static final String MESSAGE = "message";
 
+    /** Number of bytes that were written to the socket. */
+    public static final String SOCKET_WRITE_BYTES = "socket.write.bytes";
+
     /** */
     public static final String MESSAGE_CLASS = "message.class";
 
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
index d52da34..32e0a67 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
@@ -90,6 +90,7 @@ import org.jetbrains.annotations.Nullable;
 
 import static org.apache.ignite.failure.FailureType.CRITICAL_ERROR;
 import static org.apache.ignite.failure.FailureType.SYSTEM_WORKER_TERMINATION;
+import static org.apache.ignite.internal.processors.tracing.SpanTags.SOCKET_WRITE_BYTES;
 import static org.apache.ignite.internal.processors.tracing.SpanType.COMMUNICATION_SOCKET_WRITE;
 import static org.apache.ignite.internal.processors.tracing.messages.TraceableMessagesTable.traceName;
 import static org.apache.ignite.internal.util.nio.GridNioSessionMetaKey.MSG_WRITER;
@@ -1246,6 +1247,8 @@ public class GridNioServer<T> {
                         if (log.isTraceEnabled())
                             log.trace("Bytes sent [sockCh=" + sockCh + ", cnt=" + cnt + ']');
 
+                        span.addTag(SOCKET_WRITE_BYTES, () -> Integer.toString(cnt));
+
                         if (sentBytesCntMetric != null)
                             sentBytesCntMetric.add(cnt);
 
@@ -1574,8 +1577,12 @@ public class GridNioServer<T> {
                 if (writer != null)
                     writer.setCurrentWriteClass(msg.getClass());
 
+                int startPos = buf.position();
+
                 finished = msg.writeTo(buf, writer);
 
+                span.addTag(SOCKET_WRITE_BYTES, () -> Integer.toString(buf.position() - startPos));
+
                 if (finished) {
                     pendingRequests.add(req);
 
@@ -1763,8 +1770,12 @@ public class GridNioServer<T> {
                 if (writer != null)
                     writer.setCurrentWriteClass(msg.getClass());
 
+                int startPos = buf.position();
+
                 finished = msg.writeTo(buf, writer);
 
+                span.addTag(SOCKET_WRITE_BYTES, () -> Integer.toString(buf.position() - startPos));
+
                 if (finished) {
                     onMessageWritten(ses, msg);
 
diff --git a/modules/opencensus/src/test/java/org/apache/ignite/internal/processors/monitoring/opencensus/OpenCensusTracingSpiTest.java b/modules/opencensus/src/test/java/org/apache/ignite/internal/processors/monitoring/opencensus/OpenCensusTracingSpiTest.java
index 0efed98..0093968 100644
--- a/modules/opencensus/src/test/java/org/apache/ignite/internal/processors/monitoring/opencensus/OpenCensusTracingSpiTest.java
+++ b/modules/opencensus/src/test/java/org/apache/ignite/internal/processors/monitoring/opencensus/OpenCensusTracingSpiTest.java
@@ -37,6 +37,8 @@ import org.junit.Assert;
 import org.junit.Test;
 
 import static io.opencensus.trace.AttributeValue.stringAttributeValue;
+import static java.lang.Integer.parseInt;
+import static org.apache.ignite.internal.processors.tracing.SpanTags.SOCKET_WRITE_BYTES;
 import static org.apache.ignite.internal.processors.tracing.SpanType.COMMUNICATION_JOB_EXECUTE_REQUEST;
 import static org.apache.ignite.internal.processors.tracing.SpanType.COMMUNICATION_JOB_EXECUTE_RESPONSE;
 import static org.apache.ignite.internal.processors.tracing.SpanType.COMMUNICATION_REGULAR_PROCESS;
@@ -325,8 +327,16 @@ public class OpenCensusTracingSpiTest extends AbstractTracingTest {
 
         assertEquals(1, nodejobTraces.stream().filter(it -> it.contains(CUSTOM_JOB_CALL.spanName())).count());
 
+        List<SpanData> sockWriteTraces = data.stream()
+            .filter(span -> span.getName().contains(COMMUNICATION_SOCKET_WRITE.spanName()))
+            .collect(Collectors.toList());
+
         //request + response
-        assertEquals(2, nodejobTraces.stream().filter(it -> it.contains(COMMUNICATION_SOCKET_WRITE.spanName())).count());
+        assertEquals(2, sockWriteTraces.size());
+
+        sockWriteTraces.forEach(span -> assertTrue(
+            parseInt(attributeValueToString(span.getAttributes().getAttributeMap().get(SOCKET_WRITE_BYTES))) > 0));
+
         //request + response
         assertEquals(2, nodejobTraces.stream().filter(it -> it.contains(COMMUNICATION_SOCKET_READ.spanName())).count());
         //request + response