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;