This is an automated email from the ASF dual-hosted git repository.
shishkovilja 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 ecfc6361afe IGNITE-28687 Remove MarshallableMessage implementation
from PartitionUpdateCountersMessage (#13140)
ecfc6361afe is described below
commit ecfc6361afe960146f3bbc961b2b564143d7d8be
Author: Vladimir Steshin <[email protected]>
AuthorDate: Fri May 22 16:59:55 2026 +0300
IGNITE-28687 Remove MarshallableMessage implementation from
PartitionUpdateCountersMessage (#13140)
---
.../ignite/internal/CoreMessagesProvider.java | 4 +-
.../dht/PartitionUpdateCountersMessage.java | 46 +++++++++++-----------
.../cache/transactions/IgniteTxHandler.java | 2 +
.../cache/transactions/IgniteTxLocalAdapter.java | 2 +
4 files changed, 30 insertions(+), 24 deletions(-)
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/CoreMessagesProvider.java
b/modules/core/src/main/java/org/apache/ignite/internal/CoreMessagesProvider.java
index bc4966444b2..b3666694a15 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/CoreMessagesProvider.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/CoreMessagesProvider.java
@@ -337,8 +337,8 @@ public class CoreMessagesProvider extends
AbstractMarshallableMessageFactoryProv
this.factory = factory;
- // [-44, 0..2, 42, 200..204, 210, 302] - Use in tests.
- // [300..307, 350..352] - CalciteMessageFactory.
+ // [-44, 0..2, 42, 200..204, 210] - Use in tests.
+ // [300 - 500] - CalciteMessageFactory.
// [-4..-22, -30..-35, -54..-57] - SQL
// [5000 - 5500]: Utility messages. Most of them originally come from
Discovery.
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/PartitionUpdateCountersMessage.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/PartitionUpdateCountersMessage.java
index 55a90f49a33..d24ab7d7982 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/PartitionUpdateCountersMessage.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/PartitionUpdateCountersMessage.java
@@ -19,35 +19,37 @@ package
org.apache.ignite.internal.processors.cache.distributed.dht;
import java.util.Arrays;
import java.util.Map;
-import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.internal.MarshallableMessage;
import org.apache.ignite.internal.Order;
import org.apache.ignite.internal.util.GridUnsafe;
import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.marshaller.Marshaller;
+import org.apache.ignite.plugin.extensions.communication.Message;
+import org.apache.ignite.plugin.extensions.communication.MessageFactory;
/**
* Partition update counters message.
+ *
+ * @see #finishUpdating()
*/
-public class PartitionUpdateCountersMessage implements MarshallableMessage {
+public class PartitionUpdateCountersMessage implements Message {
/** */
private static final int ITEM_SIZE = 4 /* partition */ + 8 /* initial
counter */ + 8 /* updates count */;
- /** Byte representation of partition counters. */
+ /** */
@Order(0)
- byte[] data;
+ int cacheId;
- /** */
+ /** Byte representation of partition counters. */
@Order(1)
- int cacheId;
+ byte[] data;
/** */
- private int size;
+ @Order(2)
+ int size;
/** Used for assigning counters to cache entries during tx finish. */
private Map<Integer, Long> counters;
- /** */
+ /** Empty constructor for a {@link MessageFactory}. */
public PartitionUpdateCountersMessage() {
// No-op.
}
@@ -120,6 +122,8 @@ public class PartitionUpdateCountersMessage implements
MarshallableMessage {
* @param part Partition number.
* @param init Init partition counter.
* @param updatesCnt Update counter delta.
+ *
+ * @see #finishUpdating()
*/
public void add(int part, long init, long updatesCnt) {
ensureSpace(size + 1);
@@ -131,6 +135,15 @@ public class PartitionUpdateCountersMessage implements
MarshallableMessage {
GridUnsafe.putLong(data, off, updatesCnt);
}
+ /** Optimizes the memory used after adding counters with {@link #add(int,
long, long)}. */
+ public void finishUpdating() {
+ if (data != null && data.length != size * ITEM_SIZE) {
+ assert data.length > size * ITEM_SIZE;
+
+ data = Arrays.copyOf(data, size * ITEM_SIZE);
+ }
+ }
+
/**
* Calculate next counter for partition.
*
@@ -158,10 +171,9 @@ public class PartitionUpdateCountersMessage implements
MarshallableMessage {
int req = newSize * ITEM_SIZE;
if (data.length < req)
- data = Arrays.copyOf(data, data.length << 1);
+ data = Arrays.copyOf(data, (int)(data.length * 1.33f));
}
-
/** {@inheritDoc} */
@Override public String toString() {
StringBuilder sb = new StringBuilder();
@@ -182,14 +194,4 @@ public class PartitionUpdateCountersMessage implements
MarshallableMessage {
", cntrs=" + sb +
'}';
}
-
- /** {@inheritDoc} */
- @Override public void prepareMarshal(Marshaller marsh) throws
IgniteCheckedException {
- data = Arrays.copyOf(data, size * ITEM_SIZE);
- }
-
- /** {@inheritDoc} */
- @Override public void finishUnmarshal(Marshaller marsh, ClassLoader
clsLdr) throws IgniteCheckedException {
- size = data == null ? 0 : data.length / ITEM_SIZE;
- }
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java
index 10f38a3d105..392f37d32b0 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java
@@ -2197,6 +2197,8 @@ public class IgniteTxHandler {
resCntrs.add(part, partCntrs.initialCounter(i),
partCntrs.updatesCount(i));
}
+ resCntrs.finishUpdating();
+
if (resCntrs.size() > 0)
res.add(resCntrs);
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
index 71c79fe8f9b..bf2ea8938c2 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
@@ -475,6 +475,8 @@ public abstract class IgniteTxLocalAdapter extends
IgniteTxAdapter implements Ig
}
}
+ msg.finishUpdating();
+
if (msg.size() > 0)
cntrMsgs.add(msg);
}