From 73e5f5091265070e5cf79d4f834aa81cd3bffa33 Mon Sep 17 00:00:00 2001 From: Steshin Vladimir Date: Wed, 12 Aug 2026 12:26:07 +0300 Subject: [PATCH 1/8] research --- .../near/GridNearTxPrepareRequest.java | 23 ++----------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareRequest.java index f3e6504fa619d..13ad3411d1e60 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareRequest.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareRequest.java @@ -23,7 +23,6 @@ import java.util.Map; import java.util.UUID; import org.apache.ignite.internal.Order; -import org.apache.ignite.internal.SelfMarshallingMessage; import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion; import org.apache.ignite.internal.processors.cache.GridCacheContext; import org.apache.ignite.internal.processors.cache.distributed.GridDistributedTxPrepareRequest; @@ -34,12 +33,13 @@ import org.apache.ignite.internal.util.typedef.internal.S; import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.lang.IgniteUuid; +import org.apache.ignite.plugin.extensions.communication.Message; import org.jetbrains.annotations.Nullable; /** * Near transaction prepare request to primary node. 'Near' means 'Initiating node' here, not 'Near Cache'. */ -public class GridNearTxPrepareRequest extends GridDistributedTxPrepareRequest implements SelfMarshallingMessage { +public class GridNearTxPrepareRequest extends GridDistributedTxPrepareRequest implements Message { /** */ private static final int NEAR_FLAG_MASK = 0x01; @@ -292,25 +292,6 @@ private boolean isFlag(int mask) { return U.safeAbs(version().hashCode()); } - /** {@inheritDoc} */ - @Override public void selfMarshal() { - // Of all tx messages, only the near prepare request transfers entry expiry policies. - if (writes() != null) { - for (IgniteTxEntry e : writes()) - e.transferExpiryPolicy(true); - } - - if (reads() != null) { - for (IgniteTxEntry e : reads()) - e.transferExpiryPolicy(true); - } - } - - /** {@inheritDoc} */ - @Override public void selfUnmarshal() { - // No-op. - } - /** {@inheritDoc} */ @Override public String toString() { StringBuilder flags = new StringBuilder(); From ff86e0f4a564e050421088124770efe6d5921414 Mon Sep 17 00:00:00 2001 From: Steshin Vladimir Date: Thu, 13 Aug 2026 12:38:58 +0300 Subject: [PATCH 2/8] in progress --- .../GridDistributedTxPrepareRequest.java | 10 ++-- .../dht/GridDhtTxPrepareRequest.java | 12 +--- ...OptimisticSerializableTxPrepareFuture.java | 22 +++---- .../GridNearOptimisticTxPrepareFuture.java | 21 +++---- .../GridNearPessimisticTxPrepareFuture.java | 27 ++------- .../near/GridNearTxPrepareFutureAdapter.java | 58 +++++++++++++++++++ .../near/GridNearTxPrepareRequest.java | 36 ++++++++---- 7 files changed, 111 insertions(+), 75 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareRequest.java index 7820e58513e04..c48ec63421c18 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareRequest.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareRequest.java @@ -91,12 +91,12 @@ public class GridDistributedTxPrepareRequest extends GridDistributedBaseMessage /** Transaction read set. */ @Order(5) @GridToStringInclude - public Collection reads; + public @Nullable Collection reads; /** Transaction write entries. */ @Order(6) @GridToStringInclude - public Collection writes; + public @Nullable Collection writes; /** Keys whose DHT version has to be verified on the remote node. */ @Order(7) @@ -148,7 +148,7 @@ public GridDistributedTxPrepareRequest( IgniteInternalTx tx, long timeout, @Nullable Collection reads, - Collection writes, + @Nullable Collection writes, Map> txNodes, boolean retVal, boolean last, @@ -289,14 +289,14 @@ public TransactionIsolation isolation() { /** * @return Read set. */ - public Collection reads() { + public @Nullable Collection reads() { return reads; } /** * @return Write entries. */ - public Collection writes() { + public @Nullable Collection writes() { return writes; } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java index 76848da191c30..745e807f7b596 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java @@ -146,15 +146,9 @@ public GridDhtTxPrepareRequest( int taskNameHash, boolean storeWriteThrough, boolean retVal, - Collection updCntrs) { - super(tx, - timeout, - null, - dhtWrites, - txNodes, - retVal, - last, - onePhaseCommit); + Collection updCntrs) + { + super(tx, timeout, null, dhtWrites, txNodes, retVal, last, onePhaseCommit); assert futId != null; assert miniId != 0; diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticSerializableTxPrepareFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticSerializableTxPrepareFuture.java index 89692e63737ae..2bb918c749dba 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticSerializableTxPrepareFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticSerializableTxPrepareFuture.java @@ -510,27 +510,21 @@ private GridNearTxPrepareRequest createRequest( MiniFuture fut, long timeout, Collection reads, - Collection writes) { + Collection writes + ) { GridDistributedTxMapping m = fut.mapping(); - GridNearTxPrepareRequest req = new GridNearTxPrepareRequest( - futId, - tx.topologyVersion(), - tx, - timeout, + GridNearTxPrepareRequest req = createPrepareRequest( + txNodes, + m, reads, writes, - m.hasNearCacheEntries(), - txNodes, + timeout, m.last(), tx.onePhaseCommit(), - tx.needReturnValue() && tx.implicit(), - tx.implicitSingle(), - m.explicitLock(), - tx.taskNameHash(), m.clientFirst(), - txNodes.size() == 1, - tx.txState().recovery()); + txNodes.size() == 1 + ); for (IgniteTxEntry txEntry : writes) { if (txEntry.op() == TRANSFORM) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFuture.java index ad45b740ec696..f79e012c7828c 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFuture.java @@ -507,24 +507,17 @@ private void proceedPrepare(GridDistributedTxMapping m, @Nullable final Queue>() { + prepFut.listen(new CI1<>() { @Override public void apply(IgniteInternalFuture prepFut) { try { fut.onResult(prepFut.get()); diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java index 1da972e57d577..fe3772718eda9 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java @@ -205,29 +205,14 @@ private MiniFuture miniFuture(int miniId) { * @param writes Writes. * @return Request. */ - private GridNearTxPrepareRequest createRequest(Map> txNodes, + private GridNearTxPrepareRequest createRequest( + Map> txNodes, GridDistributedTxMapping m, long timeout, Collection reads, - Collection writes) { - GridNearTxPrepareRequest req = new GridNearTxPrepareRequest( - futId, - tx.topologyVersion(), - tx, - timeout, - reads, - writes, - m.hasNearCacheEntries(), - txNodes, - true, - tx.onePhaseCommit(), - tx.needReturnValue() && tx.implicit(), - tx.implicitSingle(), - m.explicitLock(), - tx.taskNameHash(), - false, - true, - tx.txState().recovery()); + Collection writes + ) { + GridNearTxPrepareRequest req = createPrepareRequest(txNodes, m, reads, writes, timeout, true, tx.onePhaseCommit(), false, true); for (IgniteTxEntry txEntry : writes) { if (txEntry.op() == TRANSFORM) @@ -258,7 +243,7 @@ private void prepareLocal(GridNearTxPrepareRequest req, cctx.tm().txHandler().prepareNearTxLocal(tx, req) : cctx.tm().txHandler().prepareColocatedTx(tx, req); - prepFut.listen(new CI1>() { + prepFut.listen(new CI1<>() { @Override public void apply(IgniteInternalFuture prepFut) { try { fut.onResult(prepFut.get(), nearEntries); diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFutureAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFutureAdapter.java index db470fbd779ac..09ee1b8664ff9 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFutureAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFutureAdapter.java @@ -43,6 +43,8 @@ import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.lang.IgniteReducer; import org.apache.ignite.lang.IgniteUuid; +import org.apache.ignite.plugin.extensions.communication.Message; +import org.jetbrains.annotations.Nullable; import static org.apache.ignite.internal.processors.cache.GridCacheOperation.NOOP; @@ -191,6 +193,62 @@ final void checkOnePhase(Map> txNodes) { } } + /** + * Creates {@link GridNearTxPrepareRequest} and prepares as {@link Message} to send to another node. Affects + * {@code writes} and {@code reads} (if aren't empty). + * + * @param txNodes Transaction nodes mapping. + * @param mapping Distributed transaction mapping. + * @param reads Read entries. + * @param writes Write entries. + * @param timeout Transaction timeout. + * @param last {@code True} if this last prepare request for node. + * @param onePhaseCommit One phase commit flag. + * @param firstClientReq {@code True} if first optimistic tx prepare request sent from client node. + * @param allowWaitTopFut {@code True} if it is safe for first client request to wait for topology future. + */ + protected GridNearTxPrepareRequest createPrepareRequest( + Map> txNodes, + GridDistributedTxMapping mapping, + @Nullable Collection reads, + @Nullable Collection writes, + long timeout, + boolean last, + boolean onePhaseCommit, + boolean firstClientReq, + boolean allowWaitTopFut + ) { + if (!F.isEmpty(writes)) { + for (IgniteTxEntry we : writes) + we.transferExpiryPolicy(true); + } + + if (!F.isEmpty(reads)) { + for (IgniteTxEntry re : reads) + re.transferExpiryPolicy(true); + } + + return new GridNearTxPrepareRequest( + futId, + tx.topologyVersion(), + tx, + timeout, + reads, + writes, + mapping.hasNearCacheEntries(), + txNodes, + last, + onePhaseCommit, + tx.needReturnValue() && tx.implicit(), + tx.implicitSingle(), + mapping.explicitLock(), + tx.taskNameHash(), + firstClientReq, + allowWaitTopFut, + tx.txState().recovery() + ); + } + /** * @param m Mapping. * @param res Response. diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareRequest.java index 13ad3411d1e60..84c7d23b84e24 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareRequest.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareRequest.java @@ -23,6 +23,7 @@ import java.util.Map; import java.util.UUID; import org.apache.ignite.internal.Order; +import org.apache.ignite.internal.SelfMarshallingMessage; import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion; import org.apache.ignite.internal.processors.cache.GridCacheContext; import org.apache.ignite.internal.processors.cache.distributed.GridDistributedTxPrepareRequest; @@ -33,13 +34,12 @@ import org.apache.ignite.internal.util.typedef.internal.S; import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.lang.IgniteUuid; -import org.apache.ignite.plugin.extensions.communication.Message; import org.jetbrains.annotations.Nullable; /** * Near transaction prepare request to primary node. 'Near' means 'Initiating node' here, not 'Near Cache'. */ -public class GridNearTxPrepareRequest extends GridDistributedTxPrepareRequest implements Message { +public class GridNearTxPrepareRequest extends GridDistributedTxPrepareRequest implements SelfMarshallingMessage { /** */ private static final int NEAR_FLAG_MASK = 0x01; @@ -114,8 +114,8 @@ public GridNearTxPrepareRequest( AffinityTopologyVersion topVer, GridNearTxLocal tx, long timeout, - Collection reads, - Collection writes, + @Nullable Collection reads, + @Nullable Collection writes, boolean near, Map> txNodes, boolean last, @@ -128,14 +128,7 @@ public GridNearTxPrepareRequest( boolean allowWaitTopFut, boolean recovery ) { - super(tx, - timeout, - reads, - writes, - txNodes, - retVal, - last, - onePhaseCommit); + super(tx, timeout, reads, writes, txNodes, retVal, last, onePhaseCommit); assert futId != null; assert !firstClientReq || tx.optimistic() : tx; @@ -292,6 +285,25 @@ private boolean isFlag(int mask) { return U.safeAbs(version().hashCode()); } + /** {@inheritDoc} */ + @Override public void selfMarshal() { + // Of all tx messages, only the near prepare request transfers entry expiry policies. + if (writes() != null) { + for (IgniteTxEntry e : writes()) + e.transferExpiryPolicy(true); + } + + if (reads() != null) { + for (IgniteTxEntry e : reads()) + e.transferExpiryPolicy(true); + } + } + + /** {@inheritDoc} */ + @Override public void selfUnmarshal() { + // No-op. + } + /** {@inheritDoc} */ @Override public String toString() { StringBuilder flags = new StringBuilder(); From f29dcc8a937c3c448fcd4d558ed8f31085002cc3 Mon Sep 17 00:00:00 2001 From: Steshin Vladimir Date: Thu, 13 Aug 2026 14:06:32 +0300 Subject: [PATCH 3/8] checkstyle --- .../cache/distributed/dht/GridDhtTxPrepareRequest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java index 745e807f7b596..ec5ce6cfd360e 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java @@ -146,8 +146,8 @@ public GridDhtTxPrepareRequest( int taskNameHash, boolean storeWriteThrough, boolean retVal, - Collection updCntrs) - { + Collection updCntrs + ) { super(tx, timeout, null, dhtWrites, txNodes, retVal, last, onePhaseCommit); assert futId != null; From 28b1131ee8ebc273f8c702ec2305784af3dddf88 Mon Sep 17 00:00:00 2001 From: Steshin Vladimir Date: Thu, 13 Aug 2026 14:09:02 +0300 Subject: [PATCH 4/8] - SelfMarshalled --- .../near/GridNearTxPrepareFutureAdapter.java | 1 + .../near/GridNearTxPrepareRequest.java | 23 ++----------------- 2 files changed, 3 insertions(+), 21 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFutureAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFutureAdapter.java index 09ee1b8664ff9..c26d09f7b6045 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFutureAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFutureAdapter.java @@ -218,6 +218,7 @@ protected GridNearTxPrepareRequest createPrepareRequest( boolean firstClientReq, boolean allowWaitTopFut ) { + // Of all tx messages, only the near prepare request transfers entry expiry policies. if (!F.isEmpty(writes)) { for (IgniteTxEntry we : writes) we.transferExpiryPolicy(true); diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareRequest.java index 84c7d23b84e24..8a1924c2a7450 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareRequest.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareRequest.java @@ -23,7 +23,6 @@ import java.util.Map; import java.util.UUID; import org.apache.ignite.internal.Order; -import org.apache.ignite.internal.SelfMarshallingMessage; import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion; import org.apache.ignite.internal.processors.cache.GridCacheContext; import org.apache.ignite.internal.processors.cache.distributed.GridDistributedTxPrepareRequest; @@ -34,12 +33,13 @@ import org.apache.ignite.internal.util.typedef.internal.S; import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.lang.IgniteUuid; +import org.apache.ignite.plugin.extensions.communication.Message; import org.jetbrains.annotations.Nullable; /** * Near transaction prepare request to primary node. 'Near' means 'Initiating node' here, not 'Near Cache'. */ -public class GridNearTxPrepareRequest extends GridDistributedTxPrepareRequest implements SelfMarshallingMessage { +public class GridNearTxPrepareRequest extends GridDistributedTxPrepareRequest implements Message { /** */ private static final int NEAR_FLAG_MASK = 0x01; @@ -285,25 +285,6 @@ private boolean isFlag(int mask) { return U.safeAbs(version().hashCode()); } - /** {@inheritDoc} */ - @Override public void selfMarshal() { - // Of all tx messages, only the near prepare request transfers entry expiry policies. - if (writes() != null) { - for (IgniteTxEntry e : writes()) - e.transferExpiryPolicy(true); - } - - if (reads() != null) { - for (IgniteTxEntry e : reads()) - e.transferExpiryPolicy(true); - } - } - - /** {@inheritDoc} */ - @Override public void selfUnmarshal() { - // No-op. - } - /** {@inheritDoc} */ @Override public String toString() { StringBuilder flags = new StringBuilder(); From 2d0ca26a20cc49895f5c845539965703cee4f9aa Mon Sep 17 00:00:00 2001 From: Vladimir Steshin Date: Fri, 14 Aug 2026 18:59:38 +0300 Subject: [PATCH 5/8] review fixes --- .../near/GridNearPessimisticTxPrepareFuture.java | 12 +++++++++++- .../distributed/near/GridNearTxPrepareRequest.java | 3 +-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java index fe3772718eda9..07c34ec88ae4a 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java @@ -212,7 +212,17 @@ private GridNearTxPrepareRequest createRequest( Collection reads, Collection writes ) { - GridNearTxPrepareRequest req = createPrepareRequest(txNodes, m, reads, writes, timeout, true, tx.onePhaseCommit(), false, true); + GridNearTxPrepareRequest req = createPrepareRequest( + txNodes, + m, + reads, + writes, + timeout, + true, + tx.onePhaseCommit(), + false, + true + ); for (IgniteTxEntry txEntry : writes) { if (txEntry.op() == TRANSFORM) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareRequest.java index 8a1924c2a7450..5b6f12521d5d1 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareRequest.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareRequest.java @@ -33,13 +33,12 @@ import org.apache.ignite.internal.util.typedef.internal.S; import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.lang.IgniteUuid; -import org.apache.ignite.plugin.extensions.communication.Message; import org.jetbrains.annotations.Nullable; /** * Near transaction prepare request to primary node. 'Near' means 'Initiating node' here, not 'Near Cache'. */ -public class GridNearTxPrepareRequest extends GridDistributedTxPrepareRequest implements Message { +public class GridNearTxPrepareRequest extends GridDistributedTxPrepareRequest { /** */ private static final int NEAR_FLAG_MASK = 0x01; From dc91229ae32016a132edaa213c3297d6f63ed31c Mon Sep 17 00:00:00 2001 From: Vladimir Steshin Date: Thu, 20 Aug 2026 13:12:32 +0300 Subject: [PATCH 6/8] Fix --- .../internal/SelfMarshallingMessage.java | 38 ------------------- 1 file changed, 38 deletions(-) delete mode 100644 modules/core/src/main/java/org/apache/ignite/internal/SelfMarshallingMessage.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/SelfMarshallingMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/SelfMarshallingMessage.java deleted file mode 100644 index 3f3eb87844db3..0000000000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/SelfMarshallingMessage.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.internal; - -import org.apache.ignite.plugin.extensions.communication.Message; - -/** - * A {@link Message} that reshapes its own fields before they go on the wire and back after they arrive: copying a - * value into the field that is actually sent, packing bits, recalculating a TTL. A message needing a - * {@code Marshaller} for that implements {@code MarshallableMessage} instead; here there is none to use. - * - * @deprecated A message carries data, it is not a place to compute. Each use of this interface is a message doing - * work that belongs to the code building or reading it, so treat the current ones as debt and add no new ones: do the - * conversion where the message is filled in and where it is consumed. - */ -@Deprecated -public interface SelfMarshallingMessage extends Message { - /** Called before anything else is marshalled, so a field this step fills still goes on the wire. */ - public void selfMarshal(); - - /** Called after everything else is unmarshalled, so this step sees the fields already read back. */ - public void selfUnmarshal(); -} From 4d4fc0125a207f310e973d73fe41f1460f5bc1bd Mon Sep 17 00:00:00 2001 From: Vladimir Steshin Date: Thu, 20 Aug 2026 14:07:50 +0300 Subject: [PATCH 7/8] Fix --- .../internal/MessageMarshallerGenerator.java | 18 +---- .../ignite/internal/MessageProcessor.java | 7 +- .../IgniteMessageFactoryImpl.java | 3 +- .../MessageUnmarshalOnceCheck.java | 3 +- .../AbstractMessageFactoryProvider.java | 4 +- .../codegen/MessageProcessorTest.java | 33 +-------- .../codegen/TestSelfMarshallingMessage.java | 37 ---------- .../TestSelfMarshallingMessageMarshaller.java | 42 ----------- .../TestSelfMarshallingMessageSerializer.java | 70 ------------------- .../codegen/WrongSelfMarshallingMessage.java | 37 ---------- 10 files changed, 8 insertions(+), 246 deletions(-) delete mode 100644 modules/core/src/test/resources/codegen/TestSelfMarshallingMessage.java delete mode 100644 modules/core/src/test/resources/codegen/TestSelfMarshallingMessageMarshaller.java delete mode 100644 modules/core/src/test/resources/codegen/TestSelfMarshallingMessageSerializer.java delete mode 100644 modules/core/src/test/resources/codegen/WrongSelfMarshallingMessage.java diff --git a/modules/codegen/src/main/java/org/apache/ignite/internal/MessageMarshallerGenerator.java b/modules/codegen/src/main/java/org/apache/ignite/internal/MessageMarshallerGenerator.java index be26f4b3ce0b0..1cc36f64f8aa7 100644 --- a/modules/codegen/src/main/java/org/apache/ignite/internal/MessageMarshallerGenerator.java +++ b/modules/codegen/src/main/java/org/apache/ignite/internal/MessageMarshallerGenerator.java @@ -52,7 +52,6 @@ import static org.apache.ignite.internal.MessageProcessor.MARSHALLABLE_MESSAGE_INTERFACE; import static org.apache.ignite.internal.MessageProcessor.MESSAGE_INTERFACE; import static org.apache.ignite.internal.MessageProcessor.NON_MARSHALLABLE_MESSAGE_INTERFACE; -import static org.apache.ignite.internal.MessageProcessor.SELF_MARSHALLING_MESSAGE_INTERFACE; /** * Generates {@code *Marshaller} classes for {@code Message} types that are not {@code NonMarshallableMessage}. @@ -97,9 +96,6 @@ public class MessageMarshallerGenerator extends MessageCompanionGenerator { /** */ private final TypeMirror nonMarshallableType; - /** */ - private final TypeMirror selfMarshallingMsgType; - /** */ private final TypeMirror cacheGrpIdMsgType; @@ -112,9 +108,6 @@ public class MessageMarshallerGenerator extends MessageCompanionGenerator { /** */ private boolean marshallable; - /** Whether the message marshals fields of its own, so the generated methods call its step. */ - private boolean selfMarshalling; - /** Whether the message pins the JDK marshaller, see {@link JdkMarshalled}. */ private boolean jdkMarshalled; @@ -144,7 +137,6 @@ public class MessageMarshallerGenerator extends MessageCompanionGenerator { msgType = type(MESSAGE_INTERFACE); cacheObjType = type(CACHE_OBJECT_CLS); nonMarshallableType = type(NON_MARSHALLABLE_MESSAGE_INTERFACE); - selfMarshallingMsgType = type(SELF_MARSHALLING_MESSAGE_INTERFACE); cacheGrpIdMsgType = type(GRID_CACHE_GROUP_ID_MESSAGE_CLS); mapType = type(Map.class.getName()); colType = type(Collection.class.getName()); @@ -172,7 +164,6 @@ public class MessageMarshallerGenerator extends MessageCompanionGenerator { } marshallable = marshallableMsgType != null && assignableFrom(type.asType(), marshallableMsgType); - selfMarshalling = selfMarshallingMsgType != null && assignableFrom(type.asType(), selfMarshallingMsgType); jdkMarshalled = pinsJdkMarshaller(type); marshVar = jdkMarshalled ? "jdkMarsh" : "marsh"; @@ -219,9 +210,6 @@ private void generateMarshalMethod(List orderedFields) { if (needsCtx(orderedFields)) appendBlock(body, List.of(ctxResolutionLine())); - if (selfMarshalling) - appendBlock(body, List.of(indentedLine("msg.selfMarshal();"))); - appendMarshalledFieldsPrepare(body); appendMarshalledPrepare(body); @@ -295,8 +283,6 @@ private void generateUnmarshalMethod(String params, List fields appendMarshalledMapFinish(body); appendMarshalledElementBlobsFinish(body); - if (selfMarshalling) - appendBlock(body, List.of(indentedLine("msg.selfUnmarshal();"))); prependMsgFactoryResolution(body); prependPinnedMarshaller(body); @@ -487,7 +473,7 @@ private void appendMarshalledElementsFinish(List body) { code.add(indentedLine("%s = U.newHashSet(%s.length);", colField, arrField)); code.add(EMPTY); - code.addAll(collectionFinishForBlock(wireField, colField, arrField, field.getSimpleName().toString())); + code.addAll(collectionFinishForBlock(wireField, colField, arrField)); code.add(EMPTY); code.add(indentedLine("%s = null;", arrField)); @@ -562,7 +548,7 @@ private void appendMarshalledElementBlobsFinish(List body) { } /** Generates the {@code for} loop body: per-element unmarshal + try/catch add into the collection. */ - private List collectionFinishForBlock(VariableElement wireField, String colField, String arrField, String fieldName) { + private List collectionFinishForBlock(VariableElement wireField, String colField, String arrField) { String compName = arrayComponentName(wireField); TypeMirror compType = ((ArrayType)wireField.asType()).getComponentType(); diff --git a/modules/codegen/src/main/java/org/apache/ignite/internal/MessageProcessor.java b/modules/codegen/src/main/java/org/apache/ignite/internal/MessageProcessor.java index decddf10e08b1..8b4ead738ee22 100644 --- a/modules/codegen/src/main/java/org/apache/ignite/internal/MessageProcessor.java +++ b/modules/codegen/src/main/java/org/apache/ignite/internal/MessageProcessor.java @@ -84,9 +84,6 @@ public class MessageProcessor extends AbstractProcessor { /** Externalizable message. */ static final String MARSHALLABLE_MESSAGE_INTERFACE = "org.apache.ignite.internal.MarshallableMessage"; - /** Message that reshapes its own fields before they go on the wire. */ - static final String SELF_MARSHALLING_MESSAGE_INTERFACE = "org.apache.ignite.internal.SelfMarshallingMessage"; - /** Marker of messages with no marshaller. */ static final String NON_MARSHALLABLE_MESSAGE_INTERFACE = "org.apache.ignite.plugin.extensions.communication.NonMarshallableMessage"; @@ -136,7 +133,6 @@ public class MessageProcessor extends AbstractProcessor { TypeElement marshallableEl = processingEnv.getElementUtils().getTypeElement(MARSHALLABLE_MESSAGE_INTERFACE); TypeElement nonMarshallableEl = processingEnv.getElementUtils().getTypeElement(NON_MARSHALLABLE_MESSAGE_INTERFACE); - TypeElement selfMarshallingEl = processingEnv.getElementUtils().getTypeElement(SELF_MARSHALLING_MESSAGE_INTERFACE); Map> msgFields = new HashMap<>(); @@ -152,10 +148,9 @@ public class MessageProcessor extends AbstractProcessor { // No marshaller is generated for a NonMarshallableMessage, so declared marshalling logic would silently never run. if (nonMarshallableEl != null && isAssignable(nonMarshallableEl.asType(), clazz) && ((marshallableEl != null && isAssignable(marshallableEl.asType(), clazz)) - || (selfMarshallingEl != null && isAssignable(selfMarshallingEl.asType(), clazz)) || hasMarshalledFields(clazz))) { processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, - "NonMarshallableMessage must not implement MarshallableMessage or SelfMarshallingMessage, " + + "NonMarshallableMessage must not implement MarshallableMessage, " + "nor declare @Marshalled fields", clazz); } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/IgniteMessageFactoryImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/IgniteMessageFactoryImpl.java index 26fc5435315e4..2488f62e89aaf 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/IgniteMessageFactoryImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/IgniteMessageFactoryImpl.java @@ -20,7 +20,6 @@ import java.lang.reflect.Array; import org.apache.ignite.IgniteException; import org.apache.ignite.internal.MarshallableMessage; -import org.apache.ignite.internal.SelfMarshallingMessage; import org.apache.ignite.internal.processors.cache.DeployableMessage; import org.apache.ignite.internal.processors.cache.GridCacheMessage; import org.apache.ignite.internal.processors.cache.GridCacheMessageDeployer; @@ -93,7 +92,7 @@ public IgniteMessageFactoryImpl(MessageFactoryProvider[] factories) { try { Message msg = serializer.createMessage(); - if (marshaller == null && (msg instanceof MarshallableMessage || msg instanceof SelfMarshallingMessage)) { + if (marshaller == null && (msg instanceof MarshallableMessage)) { throw new IgniteException("Failed to register a message: it marshals fields of its own but no" + " marshaller is provided [directType=" + directType + ", cls=" + msg.getClass().getName() + ']'); diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/MessageUnmarshalOnceCheck.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/MessageUnmarshalOnceCheck.java index f411d2d6ccd0e..9f24aa0b007ee 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/MessageUnmarshalOnceCheck.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/MessageUnmarshalOnceCheck.java @@ -24,7 +24,6 @@ import java.util.concurrent.ConcurrentHashMap; import org.apache.ignite.IgniteSystemProperties; import org.apache.ignite.internal.MarshallableMessage; -import org.apache.ignite.internal.SelfMarshallingMessage; import org.apache.ignite.plugin.extensions.communication.Message; /** @@ -58,7 +57,7 @@ private MessageUnmarshalOnceCheck() { * this pass. */ public static boolean firstUnmarshal(Message msg, boolean cacheMode) { - if (!(msg instanceof MarshallableMessage) && !(msg instanceof SelfMarshallingMessage)) + if (!(msg instanceof MarshallableMessage)) return true; // Static set: evict entries whose message was already collected, so it doesn't grow across the suite. diff --git a/modules/core/src/main/java/org/apache/ignite/internal/plugin/AbstractMessageFactoryProvider.java b/modules/core/src/main/java/org/apache/ignite/internal/plugin/AbstractMessageFactoryProvider.java index ca7c9b37ed503..d131a174fa346 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/plugin/AbstractMessageFactoryProvider.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/plugin/AbstractMessageFactoryProvider.java @@ -20,7 +20,6 @@ import java.lang.reflect.Constructor; import org.apache.ignite.IgniteException; import org.apache.ignite.internal.MarshallableMessage; -import org.apache.ignite.internal.SelfMarshallingMessage; import org.apache.ignite.internal.managers.communication.IgniteMessageFactory; import org.apache.ignite.internal.processors.cache.GridCacheMessage; import org.apache.ignite.internal.processors.cache.GridCacheMessageDeployer; @@ -55,8 +54,7 @@ protected void register(IgniteMessageFactory factory, Class< if (NonMarshallableMessage.class.isAssignableFrom(cls)) marshaller = null; else { - boolean required = MarshallableMessage.class.isAssignableFrom(cls) - || SelfMarshallingMessage.class.isAssignableFrom(cls); + boolean required = MarshallableMessage.class.isAssignableFrom(cls); marshaller = loadGenerated(cls, "Marshaller", required); } diff --git a/modules/core/src/test/java/org/apache/ignite/internal/codegen/MessageProcessorTest.java b/modules/core/src/test/java/org/apache/ignite/internal/codegen/MessageProcessorTest.java index 3842651174574..1105f85cf3fd9 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/codegen/MessageProcessorTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/codegen/MessageProcessorTest.java @@ -413,24 +413,6 @@ public void testMarshallableMessage() { .hasSourceEquivalentTo(javaFile("TestMarshallableMessageMarshaller.java")); } - /** The self-marshalling step is called from the generated marshaller, statically. */ - @Test - public void testSelfMarshallingMessage() { - Compilation compilation = compile("TestSelfMarshallingMessage.java"); - - assertThat(compilation).succeeded(); - - assertEquals(2, compilation.generatedSourceFiles().size()); - - assertThat(compilation) - .generatedSourceFile("org.apache.ignite.internal.TestSelfMarshallingMessageSerializer") - .hasSourceEquivalentTo(javaFile("TestSelfMarshallingMessageSerializer.java")); - - assertThat(compilation) - .generatedSourceFile("org.apache.ignite.internal.TestSelfMarshallingMessageMarshaller") - .hasSourceEquivalentTo(javaFile("TestSelfMarshallingMessageMarshaller.java")); - } - /** * Negative test for a coflict situation when two enum mappers are used for the same enum in different messages. */ @@ -670,19 +652,8 @@ public void testNonMarshallableWithMarshalledFieldFailed() { assertThat(compilation).failed(); - assertThat(compilation).hadErrorContaining("NonMarshallableMessage must not implement MarshallableMessage " + - "or SelfMarshallingMessage, nor declare @Marshalled fields"); - } - - /** A self-marshalling step of a {@code NonMarshallableMessage} would never run: it gets no marshaller to call it. */ - @Test - public void testNonMarshallableSelfMarshallingFailed() { - Compilation compilation = compile("WrongSelfMarshallingMessage.java"); - - assertThat(compilation).failed(); - - assertThat(compilation).hadErrorContaining("NonMarshallableMessage must not implement MarshallableMessage " + - "or SelfMarshallingMessage, nor declare @Marshalled fields"); + assertThat(compilation).hadErrorContaining("NonMarshallableMessage must not implement MarshallableMessage, " + + "nor declare @Marshalled fields"); } /** Test that {@code @Marshalled} annotation on {@link Message} field will fail generation. */ diff --git a/modules/core/src/test/resources/codegen/TestSelfMarshallingMessage.java b/modules/core/src/test/resources/codegen/TestSelfMarshallingMessage.java deleted file mode 100644 index d67250092d421..0000000000000 --- a/modules/core/src/test/resources/codegen/TestSelfMarshallingMessage.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.internal; - -public class TestSelfMarshallingMessage implements SelfMarshallingMessage { - long ttl; - - @Order(0) - long ttlOnWire; - - @Override public void selfMarshal() { - ttlOnWire = ttl; - } - - @Override public void selfUnmarshal() { - ttl = ttlOnWire; - } - - public short directType() { - return 0; - } -} diff --git a/modules/core/src/test/resources/codegen/TestSelfMarshallingMessageMarshaller.java b/modules/core/src/test/resources/codegen/TestSelfMarshallingMessageMarshaller.java deleted file mode 100644 index 9f72a64eeeaff..0000000000000 --- a/modules/core/src/test/resources/codegen/TestSelfMarshallingMessageMarshaller.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.internal; - -import org.apache.ignite.IgniteCheckedException; -import org.apache.ignite.internal.GridKernalContext; -import org.apache.ignite.internal.TestSelfMarshallingMessage; -import org.apache.ignite.internal.processors.cache.CacheObjectContext; -import org.apache.ignite.marshaller.Marshaller; -import org.apache.ignite.plugin.extensions.communication.MessageMarshaller; - -/** - * This class is generated automatically. - * - * @see org.apache.ignite.internal.MessageProcessor - */ -public final class TestSelfMarshallingMessageMarshaller implements MessageMarshaller { - /** */ - @Override public void marshal(TestSelfMarshallingMessage msg, Marshaller marsh, GridKernalContext kctx, CacheObjectContext cacheObjCtx) throws IgniteCheckedException { - msg.selfMarshal(); - } - - /** */ - @Override public void unmarshal(TestSelfMarshallingMessage msg, Marshaller marsh, GridKernalContext kctx, CacheObjectContext cacheObjCtx, ClassLoader clsLdr) throws IgniteCheckedException { - msg.selfUnmarshal(); - } -} \ No newline at end of file diff --git a/modules/core/src/test/resources/codegen/TestSelfMarshallingMessageSerializer.java b/modules/core/src/test/resources/codegen/TestSelfMarshallingMessageSerializer.java deleted file mode 100644 index ceb51075839df..0000000000000 --- a/modules/core/src/test/resources/codegen/TestSelfMarshallingMessageSerializer.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.internal; - -import org.apache.ignite.internal.TestSelfMarshallingMessage; -import org.apache.ignite.plugin.extensions.communication.MessageReader; -import org.apache.ignite.plugin.extensions.communication.MessageSerializer; -import org.apache.ignite.plugin.extensions.communication.MessageWriter; - -/** - * This class is generated automatically. - * - * @see org.apache.ignite.internal.MessageProcessor - */ -public final class TestSelfMarshallingMessageSerializer implements MessageSerializer { - /** */ - @Override public final boolean writeTo(TestSelfMarshallingMessage msg, MessageWriter writer) { - if (!writer.isHeaderWritten()) { - if (!writer.writeHeader(msg.directType())) - return false; - - writer.onHeaderWritten(); - } - - switch (writer.state()) { - case 0: - if (!writer.writeLong(msg.ttlOnWire)) - return false; - - writer.incrementState(); - } - - return true; - } - - /** */ - @Override public final boolean readFrom(TestSelfMarshallingMessage msg, MessageReader reader) { - switch (reader.state()) { - case 0: - msg.ttlOnWire = reader.readLong(); - - if (!reader.isLastRead()) - return false; - - reader.incrementState(); - } - - return true; - } - - /** {@inheritDoc} */ - @Override public final TestSelfMarshallingMessage createMessage() { - return new TestSelfMarshallingMessage(); - } -} diff --git a/modules/core/src/test/resources/codegen/WrongSelfMarshallingMessage.java b/modules/core/src/test/resources/codegen/WrongSelfMarshallingMessage.java deleted file mode 100644 index b0d5f255a0292..0000000000000 --- a/modules/core/src/test/resources/codegen/WrongSelfMarshallingMessage.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.internal; - -import org.apache.ignite.plugin.extensions.communication.NonMarshallableMessage; - -public class WrongSelfMarshallingMessage implements NonMarshallableMessage, SelfMarshallingMessage { - @Order(0) - int id; - - @Override public void selfMarshal() { - // No-op. - } - - @Override public void selfUnmarshal() { - // No-op. - } - - public short directType() { - return 0; - } -} From 30304871f9e190e58ca65ad34a4aed4616badb00 Mon Sep 17 00:00:00 2001 From: Vladimir Steshin Date: Sun, 23 Aug 2026 16:36:46 +0300 Subject: [PATCH 8/8] checkstyle --- .../org/apache/ignite/internal/MessageMarshallerGenerator.java | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/codegen/src/main/java/org/apache/ignite/internal/MessageMarshallerGenerator.java b/modules/codegen/src/main/java/org/apache/ignite/internal/MessageMarshallerGenerator.java index 1cc36f64f8aa7..0222043045bd1 100644 --- a/modules/codegen/src/main/java/org/apache/ignite/internal/MessageMarshallerGenerator.java +++ b/modules/codegen/src/main/java/org/apache/ignite/internal/MessageMarshallerGenerator.java @@ -283,7 +283,6 @@ private void generateUnmarshalMethod(String params, List fields appendMarshalledMapFinish(body); appendMarshalledElementBlobsFinish(body); - prependMsgFactoryResolution(body); prependPinnedMarshaller(body); });