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

av pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new af3feac3f18 IGNITE-27916 Use MessageSerializer for Statistics messages 
(#12774)
af3feac3f18 is described below

commit af3feac3f18d8d12cfe8f17cbd0874aea58e84c3
Author: Aleksandr Chesnokov <[email protected]>
AuthorDate: Thu Feb 26 18:39:58 2026 +0300

    IGNITE-27916 Use MessageSerializer for Statistics messages (#12774)
---
 .../communication/GridIoMessageFactory.java        |  12 +-
 .../query/stat/messages/StatisticsColumnData.java  | 184 +++------------------
 .../stat/messages/StatisticsDecimalMessage.java    |  63 +------
 .../query/stat/messages/StatisticsKeyMessage.java  |  85 +---------
 .../query/stat/messages/StatisticsObjectData.java  | 140 ++--------------
 5 files changed, 52 insertions(+), 432 deletions(-)

diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
index 85dba405146..7ccc0ef4a76 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
@@ -294,9 +294,13 @@ import 
org.apache.ignite.internal.processors.query.messages.GridQueryKillRespons
 import 
org.apache.ignite.internal.processors.query.schema.message.SchemaOperationStatusMessage;
 import 
org.apache.ignite.internal.processors.query.schema.message.SchemaOperationStatusMessageSerializer;
 import 
org.apache.ignite.internal.processors.query.stat.messages.StatisticsColumnData;
+import 
org.apache.ignite.internal.processors.query.stat.messages.StatisticsColumnDataSerializer;
 import 
org.apache.ignite.internal.processors.query.stat.messages.StatisticsDecimalMessage;
+import 
org.apache.ignite.internal.processors.query.stat.messages.StatisticsDecimalMessageSerializer;
 import 
org.apache.ignite.internal.processors.query.stat.messages.StatisticsKeyMessage;
+import 
org.apache.ignite.internal.processors.query.stat.messages.StatisticsKeyMessageSerializer;
 import 
org.apache.ignite.internal.processors.query.stat.messages.StatisticsObjectData;
+import 
org.apache.ignite.internal.processors.query.stat.messages.StatisticsObjectDataSerializer;
 import 
org.apache.ignite.internal.processors.query.stat.messages.StatisticsRequest;
 import 
org.apache.ignite.internal.processors.query.stat.messages.StatisticsRequestSerializer;
 import 
org.apache.ignite.internal.processors.query.stat.messages.StatisticsResponse;
@@ -499,10 +503,10 @@ public class GridIoMessageFactory implements 
MessageFactoryProvider {
             new IncrementalSnapshotAwareMessageSerializer());
 
         // Index statistics.
-        factory.register(StatisticsKeyMessage.TYPE_CODE, 
StatisticsKeyMessage::new);
-        factory.register(StatisticsDecimalMessage.TYPE_CODE, 
StatisticsDecimalMessage::new);
-        factory.register(StatisticsObjectData.TYPE_CODE, 
StatisticsObjectData::new);
-        factory.register(StatisticsColumnData.TYPE_CODE, 
StatisticsColumnData::new);
+        factory.register(StatisticsKeyMessage.TYPE_CODE, 
StatisticsKeyMessage::new, new StatisticsKeyMessageSerializer());
+        factory.register(StatisticsDecimalMessage.TYPE_CODE, 
StatisticsDecimalMessage::new, new StatisticsDecimalMessageSerializer());
+        factory.register(StatisticsObjectData.TYPE_CODE, 
StatisticsObjectData::new, new StatisticsObjectDataSerializer());
+        factory.register(StatisticsColumnData.TYPE_CODE, 
StatisticsColumnData::new, new StatisticsColumnDataSerializer());
         factory.register(StatisticsRequest.TYPE_CODE, StatisticsRequest::new, 
new StatisticsRequestSerializer());
         factory.register(StatisticsResponse.TYPE_CODE, 
StatisticsResponse::new, new StatisticsResponseSerializer());
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/stat/messages/StatisticsColumnData.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/stat/messages/StatisticsColumnData.java
index 2fb728eb6c9..5ef7339a708 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/stat/messages/StatisticsColumnData.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/stat/messages/StatisticsColumnData.java
@@ -18,10 +18,8 @@
 package org.apache.ignite.internal.processors.query.stat.messages;
 
 import java.io.Serializable;
-import java.nio.ByteBuffer;
+import org.apache.ignite.internal.Order;
 import org.apache.ignite.plugin.extensions.communication.Message;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
 
 /**
  * Statistics by column (or by set of columns, if they collected together)
@@ -34,31 +32,40 @@ public class StatisticsColumnData implements Message, 
Serializable {
     public static final short TYPE_CODE = 186;
 
     /** Min value in column. */
-    private StatisticsDecimalMessage min;
+    @Order(0)
+    StatisticsDecimalMessage min;
 
     /** Max value in column. */
-    private StatisticsDecimalMessage max;
+    @Order(1)
+    StatisticsDecimalMessage max;
 
     /** Number of null values in column. */
-    private long nulls;
+    @Order(2)
+    long nulls;
 
     /** Number of distinct values in column (except nulls). */
-    private long distinct;
+    @Order(3)
+    long distinct;
 
     /** Total vals in column. */
-    private long total;
+    @Order(4)
+    long total;
 
     /** Average size, for variable size values (in bytes). */
-    private int size;
+    @Order(5)
+    int size;
 
     /** Raw data. */
-    private byte[] rawData;
+    @Order(6)
+    byte[] rawData;
 
     /** Version. */
-    private long ver;
+    @Order(7)
+    long ver;
 
     /** Created at time, milliseconds. */
-    private long createdAt;
+    @Order(8)
+    long createdAt;
 
     /**
      * Default constructor.
@@ -165,159 +172,6 @@ public class StatisticsColumnData implements Message, 
Serializable {
         return createdAt;
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeLong(createdAt))
-                    return false;
-
-                writer.incrementState();
-
-            case 1:
-                if (!writer.writeLong(distinct))
-                    return false;
-
-                writer.incrementState();
-
-            case 2:
-                if (!writer.writeMessage(max))
-                    return false;
-
-                writer.incrementState();
-
-            case 3:
-                if (!writer.writeMessage(min))
-                    return false;
-
-                writer.incrementState();
-
-            case 4:
-                if (!writer.writeLong(nulls))
-                    return false;
-
-                writer.incrementState();
-
-            case 5:
-                if (!writer.writeByteArray(rawData))
-                    return false;
-
-                writer.incrementState();
-
-            case 6:
-                if (!writer.writeInt(size))
-                    return false;
-
-                writer.incrementState();
-
-            case 7:
-                if (!writer.writeLong(total))
-                    return false;
-
-                writer.incrementState();
-
-            case 8:
-                if (!writer.writeLong(ver))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        switch (reader.state()) {
-            case 0:
-                createdAt = reader.readLong();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 1:
-                distinct = reader.readLong();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 2:
-                max = reader.readMessage();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 3:
-                min = reader.readMessage();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 4:
-                nulls = reader.readLong();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 5:
-                rawData = reader.readByteArray();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 6:
-                size = reader.readInt();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 7:
-                total = reader.readLong();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 8:
-                ver = reader.readLong();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return TYPE_CODE;
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/stat/messages/StatisticsDecimalMessage.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/stat/messages/StatisticsDecimalMessage.java
index 23ee3d6fa22..3ed48fc1d19 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/stat/messages/StatisticsDecimalMessage.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/stat/messages/StatisticsDecimalMessage.java
@@ -20,11 +20,9 @@ package 
org.apache.ignite.internal.processors.query.stat.messages;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.math.BigInteger;
-import java.nio.ByteBuffer;
 import java.util.Objects;
+import org.apache.ignite.internal.Order;
 import org.apache.ignite.plugin.extensions.communication.Message;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
 
 /**
  * H2 Decimal.
@@ -37,10 +35,12 @@ public class StatisticsDecimalMessage implements Message, 
Serializable {
     public static final short TYPE_CODE = 184;
 
     /** */
-    private int scale;
+    @Order(0)
+    int scale;
 
     /** */
-    private byte[] b;
+    @Order(1)
+    byte[] b;
 
     /**
      *
@@ -73,59 +73,6 @@ public class StatisticsDecimalMessage implements Message, 
Serializable {
         return new BigDecimal(new BigInteger(b), scale);
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeByteArray(b))
-                    return false;
-
-                writer.incrementState();
-
-            case 1:
-                if (!writer.writeInt(scale))
-                    return false;
-
-                writer.incrementState();
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        switch (reader.state()) {
-            case 0:
-                b = reader.readByteArray();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 1:
-                scale = reader.readInt();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return TYPE_CODE;
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/stat/messages/StatisticsKeyMessage.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/stat/messages/StatisticsKeyMessage.java
index 57c7a12a43a..17e5eb44ad3 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/stat/messages/StatisticsKeyMessage.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/stat/messages/StatisticsKeyMessage.java
@@ -18,15 +18,11 @@
 package org.apache.ignite.internal.processors.query.stat.messages;
 
 import java.io.Serializable;
-import java.nio.ByteBuffer;
 import java.util.List;
 import java.util.Objects;
-import org.apache.ignite.internal.GridDirectCollection;
+import org.apache.ignite.internal.Order;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.plugin.extensions.communication.Message;
-import 
org.apache.ignite.plugin.extensions.communication.MessageCollectionItemType;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
 
 /**
  * Key, describing the object of statistics. For example: table with some 
columns.
@@ -39,14 +35,16 @@ public class StatisticsKeyMessage implements Message, 
Serializable {
     public static final short TYPE_CODE = 183;
 
     /** Object schema. */
-    private String schema;
+    @Order(0)
+    String schema;
 
     /** Object name. */
-    private String obj;
+    @Order(1)
+    String obj;
 
     /** Optional list of columns to collect statistics by. */
-    @GridDirectCollection(String.class)
-    private List<String> colNames;
+    @Order(2)
+    List<String> colNames;
 
     /**
      * Empty constructor.
@@ -89,75 +87,6 @@ public class StatisticsKeyMessage implements Message, 
Serializable {
         return colNames;
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeCollection(colNames, 
MessageCollectionItemType.STRING))
-                    return false;
-
-                writer.incrementState();
-
-            case 1:
-                if (!writer.writeString(obj))
-                    return false;
-
-                writer.incrementState();
-
-            case 2:
-                if (!writer.writeString(schema))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        switch (reader.state()) {
-            case 0:
-                colNames = 
reader.readCollection(MessageCollectionItemType.STRING);
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 1:
-                obj = reader.readString();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 2:
-                schema = reader.readString();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return TYPE_CODE;
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/stat/messages/StatisticsObjectData.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/stat/messages/StatisticsObjectData.java
index 0e77bd4b83e..f7118b53cab 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/stat/messages/StatisticsObjectData.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/stat/messages/StatisticsObjectData.java
@@ -18,14 +18,10 @@
 package org.apache.ignite.internal.processors.query.stat.messages;
 
 import java.io.Serializable;
-import java.nio.ByteBuffer;
 import java.util.Map;
-import org.apache.ignite.internal.GridDirectMap;
+import org.apache.ignite.internal.Order;
 import org.apache.ignite.internal.processors.query.stat.StatisticsType;
 import org.apache.ignite.plugin.extensions.communication.Message;
-import 
org.apache.ignite.plugin.extensions.communication.MessageCollectionItemType;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
 
 /**
  * Statistics for some object (index or table) in database.
@@ -38,23 +34,28 @@ public class StatisticsObjectData implements Message, 
Serializable {
     public static final short TYPE_CODE = 185;
 
     /** Statistics key. */
-    private StatisticsKeyMessage key;
+    @Order(0)
+    StatisticsKeyMessage key;
 
     /** Total row count in current object. */
-    private long rowsCnt;
+    @Order(1)
+    long rowsCnt;
 
     /** Type of statistics. */
-    private StatisticsType type;
+    @Order(2)
+    StatisticsType type;
 
     /** Partition id if statistics was collected by partition. */
-    private int partId;
+    @Order(3)
+    int partId;
 
     /** Update counter if statistics was collected by partition. */
-    private long updCnt;
+    @Order(4)
+    long updCnt;
 
     /** Columns key to statistic map. */
-    @GridDirectMap(keyType = String.class, valueType = 
StatisticsColumnData.class)
-    private Map<String, StatisticsColumnData> data;
+    @Order(5)
+    Map<String, StatisticsColumnData> data;
 
     /**
      * Constructor.
@@ -131,121 +132,6 @@ public class StatisticsObjectData implements Message, 
Serializable {
         // No-op.
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeMap(data, MessageCollectionItemType.STRING, 
MessageCollectionItemType.MSG))
-                    return false;
-
-                writer.incrementState();
-
-            case 1:
-                if (!writer.writeMessage(key))
-                    return false;
-
-                writer.incrementState();
-
-            case 2:
-                if (!writer.writeInt(partId))
-                    return false;
-
-                writer.incrementState();
-
-            case 3:
-                if (!writer.writeLong(rowsCnt))
-                    return false;
-
-                writer.incrementState();
-
-            case 4:
-                if (!writer.writeByte(type != null ? (byte)type.ordinal() : 
-1))
-                    return false;
-
-                writer.incrementState();
-
-            case 5:
-                if (!writer.writeLong(updCnt))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        switch (reader.state()) {
-            case 0:
-                data = reader.readMap(MessageCollectionItemType.STRING, 
MessageCollectionItemType.MSG, false);
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 1:
-                key = reader.readMessage();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 2:
-                partId = reader.readInt();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 3:
-                rowsCnt = reader.readLong();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 4:
-                byte typeOrd;
-
-                typeOrd = reader.readByte();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                type = StatisticsType.fromOrdinal(typeOrd);
-
-                reader.incrementState();
-
-            case 5:
-                updCnt = reader.readLong();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return TYPE_CODE;

Reply via email to