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 20f5040d7dc IGNITE-26629 Refactor GridDistributedTxPrepareResponse and
successors (#12398)
20f5040d7dc is described below
commit 20f5040d7dcde7c4e8e0b1f4a5d49fa94704f811
Author: Ilya Shishkov <[email protected]>
AuthorDate: Wed Oct 22 20:52:01 2025 +0300
IGNITE-26629 Refactor GridDistributedTxPrepareResponse and successors
(#12398)
---
.../communication/GridIoMessageFactory.java | 9 +-
.../distributed/GridDistributedBaseMessage.java | 108 +------
.../GridDistributedTxPrepareResponse.java | 177 +++-------
.../distributed/dht/GridDhtTxPrepareFuture.java | 6 +-
.../distributed/dht/GridDhtTxPrepareResponse.java | 175 +++-------
.../cache/distributed/near/GridNearLockFuture.java | 8 +-
.../near/GridNearTransactionalCache.java | 4 +-
.../near/GridNearTxPrepareFutureAdapter.java | 6 +-
.../near/GridNearTxPrepareResponse.java | 358 ++++++++-------------
.../cache/transactions/IgniteTxHandler.java | 4 +-
.../main/resources/META-INF/classnames.properties | 1 -
11 files changed, 245 insertions(+), 611 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 752448712fc..1987c5aacbb 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
@@ -59,12 +59,14 @@ import
org.apache.ignite.internal.codegen.GridDhtTxFinishRequestSerializer;
import org.apache.ignite.internal.codegen.GridDhtTxFinishResponseSerializer;
import
org.apache.ignite.internal.codegen.GridDhtTxOnePhaseCommitAckRequestSerializer;
import org.apache.ignite.internal.codegen.GridDhtTxPrepareRequestSerializer;
+import org.apache.ignite.internal.codegen.GridDhtTxPrepareResponseSerializer;
import org.apache.ignite.internal.codegen.GridDhtUnlockRequestSerializer;
import org.apache.ignite.internal.codegen.GridDistributedLockRequestSerializer;
import
org.apache.ignite.internal.codegen.GridDistributedLockResponseSerializer;
import
org.apache.ignite.internal.codegen.GridDistributedTxFinishRequestSerializer;
import
org.apache.ignite.internal.codegen.GridDistributedTxFinishResponseSerializer;
import
org.apache.ignite.internal.codegen.GridDistributedTxPrepareRequestSerializer;
+import
org.apache.ignite.internal.codegen.GridDistributedTxPrepareResponseSerializer;
import org.apache.ignite.internal.codegen.GridJobCancelRequestSerializer;
import org.apache.ignite.internal.codegen.GridJobSiblingsRequestSerializer;
import
org.apache.ignite.internal.codegen.GridNearAtomicCheckUpdateRequestSerializer;
@@ -78,6 +80,7 @@ import
org.apache.ignite.internal.codegen.GridNearSingleGetRequestSerializer;
import org.apache.ignite.internal.codegen.GridNearTxFinishRequestSerializer;
import org.apache.ignite.internal.codegen.GridNearTxFinishResponseSerializer;
import org.apache.ignite.internal.codegen.GridNearTxPrepareRequestSerializer;
+import org.apache.ignite.internal.codegen.GridNearTxPrepareResponseSerializer;
import org.apache.ignite.internal.codegen.GridNearUnlockRequestSerializer;
import org.apache.ignite.internal.codegen.GridQueryCancelRequestSerializer;
import org.apache.ignite.internal.codegen.GridQueryFailResponseSerializer;
@@ -302,7 +305,7 @@ public class GridIoMessageFactory implements
MessageFactoryProvider {
factory.register((short)23, GridDistributedTxFinishRequest::new, new
GridDistributedTxFinishRequestSerializer());
factory.register((short)24, GridDistributedTxFinishResponse::new, new
GridDistributedTxFinishResponseSerializer());
factory.register((short)25, GridDistributedTxPrepareRequest::new, new
GridDistributedTxPrepareRequestSerializer());
- factory.register((short)26, GridDistributedTxPrepareResponse::new);
+ factory.register((short)26, GridDistributedTxPrepareResponse::new, new
GridDistributedTxPrepareResponseSerializer());
// Type 27 is former GridDistributedUnlockRequest
factory.register((short)28, GridDhtAffinityAssignmentRequest::new, new
GridDhtAffinityAssignmentRequestSerializer());
factory.register((short)29, GridDhtAffinityAssignmentResponse::new);
@@ -311,7 +314,7 @@ public class GridIoMessageFactory implements
MessageFactoryProvider {
factory.register((short)32, GridDhtTxFinishRequest::new, new
GridDhtTxFinishRequestSerializer());
factory.register((short)33, GridDhtTxFinishResponse::new, new
GridDhtTxFinishResponseSerializer());
factory.register((short)34, GridDhtTxPrepareRequest::new, new
GridDhtTxPrepareRequestSerializer());
- factory.register((short)35, GridDhtTxPrepareResponse::new);
+ factory.register((short)35, GridDhtTxPrepareResponse::new, new
GridDhtTxPrepareResponseSerializer());
factory.register((short)36, GridDhtUnlockRequest::new, new
GridDhtUnlockRequestSerializer());
factory.register((short)37, GridDhtAtomicDeferredUpdateResponse::new);
factory.register((short)38, GridDhtAtomicUpdateRequest::new);
@@ -331,7 +334,7 @@ public class GridIoMessageFactory implements
MessageFactoryProvider {
factory.register((short)53, GridNearTxFinishRequest::new, new
GridNearTxFinishRequestSerializer());
factory.register((short)54, GridNearTxFinishResponse::new, new
GridNearTxFinishResponseSerializer());
factory.register((short)55, GridNearTxPrepareRequest::new, new
GridNearTxPrepareRequestSerializer());
- factory.register((short)56, GridNearTxPrepareResponse::new);
+ factory.register((short)56, GridNearTxPrepareResponse::new, new
GridNearTxPrepareResponseSerializer());
factory.register((short)57, GridNearUnlockRequest::new, new
GridNearUnlockRequestSerializer());
factory.register((short)58, GridCacheQueryRequest::new);
factory.register((short)59, GridCacheQueryResponse::new);
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedBaseMessage.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedBaseMessage.java
index 264caa27e6c..a4bb44cfa72 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedBaseMessage.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedBaseMessage.java
@@ -17,11 +17,7 @@
package org.apache.ignite.internal.processors.cache.distributed;
-import java.nio.ByteBuffer;
import java.util.Collection;
-import java.util.Collections;
-import org.apache.ignite.internal.GridDirectCollection;
-import org.apache.ignite.internal.GridDirectTransient;
import org.apache.ignite.internal.Order;
import org.apache.ignite.internal.processors.cache.GridCacheDeployable;
import org.apache.ignite.internal.processors.cache.GridCacheIdMessage;
@@ -29,9 +25,7 @@ import
org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import
org.apache.ignite.internal.processors.cache.version.GridCacheVersionable;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.internal.S;
-import
org.apache.ignite.plugin.extensions.communication.MessageCollectionItemType;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
+import org.jetbrains.annotations.Nullable;
/**
* Base for all messages in replicated cache.
@@ -46,18 +40,15 @@ public abstract class GridDistributedBaseMessage extends
GridCacheIdMessage impl
/** Committed versions with order higher than one for this message (needed
for commit ordering). */
@Order(value = 5, method = "committedVersions")
@GridToStringInclude
- @GridDirectCollection(GridCacheVersion.class)
- private Collection<GridCacheVersion> committedVers;
+ private @Nullable Collection<GridCacheVersion> committedVers;
/** Rolled back versions with order higher than one for this message
(needed for commit ordering). */
@Order(value = 6, method = "rolledbackVersions")
@GridToStringInclude
- @GridDirectCollection(GridCacheVersion.class)
- private Collection<GridCacheVersion> rolledbackVers;
+ private @Nullable Collection<GridCacheVersion> rolledbackVers;
/** Count of keys referenced in candidates array (needed only locally for
optimization). */
@GridToStringInclude
- @GridDirectTransient
private int cnt;
/**
@@ -114,8 +105,8 @@ public abstract class GridDistributedBaseMessage extends
GridCacheIdMessage impl
* @param committedVers Committed versions.
* @param rolledbackVers Rolled back versions.
*/
- public void completedVersions(Collection<GridCacheVersion> committedVers,
- Collection<GridCacheVersion> rolledbackVers) {
+ public void completedVersions(@Nullable Collection<GridCacheVersion>
committedVers,
+ @Nullable Collection<GridCacheVersion> rolledbackVers) {
this.committedVers = committedVers;
this.rolledbackVers = rolledbackVers;
}
@@ -123,28 +114,28 @@ public abstract class GridDistributedBaseMessage extends
GridCacheIdMessage impl
/**
* @return Committed versions.
*/
- public Collection<GridCacheVersion> committedVersions() {
- return committedVers == null ?
Collections.<GridCacheVersion>emptyList() : committedVers;
+ public @Nullable Collection<GridCacheVersion> committedVersions() {
+ return committedVers;
}
/**
* @param committedVers Committed versions.
*/
- public void committedVersions(Collection<GridCacheVersion> committedVers) {
+ public void committedVersions(@Nullable Collection<GridCacheVersion>
committedVers) {
this.committedVers = committedVers;
}
/**
* @return Rolled back versions.
*/
- public Collection<GridCacheVersion> rolledbackVersions() {
- return rolledbackVers == null ?
Collections.<GridCacheVersion>emptyList() : rolledbackVers;
+ public @Nullable Collection<GridCacheVersion> rolledbackVersions() {
+ return rolledbackVers;
}
/**
* @param rolledbackVers Rolled back versions.
*/
- public void rolledbackVersions(Collection<GridCacheVersion>
rolledbackVers) {
+ public void rolledbackVersions(@Nullable Collection<GridCacheVersion>
rolledbackVers) {
this.rolledbackVers = rolledbackVers;
}
@@ -155,83 +146,6 @@ public abstract class GridDistributedBaseMessage extends
GridCacheIdMessage impl
return cnt;
}
- /** {@inheritDoc} */
- @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
- // TODO: Remove #writeTo() after all inheritors have migrated to the
new ser/der scheme (IGNITE-25490).
- writer.setBuffer(buf);
-
- if (!super.writeTo(buf, writer))
- return false;
-
- if (!writer.isHeaderWritten()) {
- if (!writer.writeHeader(directType()))
- return false;
-
- writer.onHeaderWritten();
- }
-
- switch (writer.state()) {
- case 4:
- if (!writer.writeCollection(committedVers,
MessageCollectionItemType.MSG))
- return false;
-
- writer.incrementState();
-
- case 5:
- if (!writer.writeCollection(rolledbackVers,
MessageCollectionItemType.MSG))
- return false;
-
- writer.incrementState();
-
- case 6:
- if (!writer.writeMessage(ver))
- return false;
-
- writer.incrementState();
-
- }
-
- return true;
- }
-
- /** {@inheritDoc} */
- @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
- // TODO: Remove #readFrom() after all inheritors have migrated to the
new ser/der scheme (IGNITE-25490).
- reader.setBuffer(buf);
-
- if (!super.readFrom(buf, reader))
- return false;
-
- switch (reader.state()) {
- case 4:
- committedVers =
reader.readCollection(MessageCollectionItemType.MSG);
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- case 5:
- rolledbackVers =
reader.readCollection(MessageCollectionItemType.MSG);
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- case 6:
- ver = reader.readMessage();
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- }
-
- return true;
- }
-
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(GridDistributedBaseMessage.class, this, "super",
super.toString());
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareResponse.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareResponse.java
index 8b131faee99..446227578a8 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareResponse.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareResponse.java
@@ -17,42 +17,33 @@
package org.apache.ignite.internal.processors.cache.distributed;
-import java.nio.ByteBuffer;
-import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteLogger;
-import org.apache.ignite.internal.GridDirectTransient;
+import org.apache.ignite.internal.Order;
+import org.apache.ignite.internal.managers.communication.ErrorMessage;
import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
import org.apache.ignite.internal.processors.cache.transactions.IgniteTxState;
import
org.apache.ignite.internal.processors.cache.transactions.IgniteTxStateAware;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.util.tostring.GridToStringBuilder;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
-import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
+import org.jetbrains.annotations.Nullable;
/**
* Response to prepare request.
*/
public class GridDistributedTxPrepareResponse extends
GridDistributedBaseMessage implements IgniteTxStateAware {
- /** Error. */
+ /** Error message. */
@GridToStringExclude
- @GridDirectTransient
- private Throwable err;
+ @Order(value = 7, method = "errorMessage")
+ private @Nullable ErrorMessage errMsg;
- /** Serialized error. */
- private byte[] errBytes;
-
- /** Transient TX state. */
- @GridDirectTransient
+ /** TX state. */
private IgniteTxState txState;
- /** */
+ /** Partition ID this message is targeted to. */
+ @Order(value = 8, method = "partition")
private int part;
- /** */
- protected byte flags;
-
/**
* Empty constructor.
*/
@@ -77,31 +68,13 @@ public class GridDistributedTxPrepareResponse extends
GridDistributedBaseMessage
* @param err Error.
* @param addDepInfo Deployment info flag.
*/
- public GridDistributedTxPrepareResponse(int part, GridCacheVersion xid,
Throwable err, boolean addDepInfo) {
+ public GridDistributedTxPrepareResponse(int part, GridCacheVersion xid,
@Nullable Throwable err, boolean addDepInfo) {
super(xid, 0, addDepInfo);
this.part = part;
- this.err = err;
- }
- /**
- * Sets flag mask.
- *
- * @param flag Set or clear.
- * @param mask Mask.
- */
- protected final void setFlag(boolean flag, int mask) {
- flags = flag ? (byte)(flags | mask) : (byte)(flags & ~mask);
- }
-
- /**
- * Reags flag mask.
- *
- * @param mask Mask to read.
- * @return Flag value.
- */
- protected final boolean isFlag(int mask) {
- return (flags & mask) != 0;
+ if (err != null)
+ errMsg = new ErrorMessage(err);
}
/** {@inheritDoc} */
@@ -109,23 +82,24 @@ public class GridDistributedTxPrepareResponse extends
GridDistributedBaseMessage
return part;
}
- /** {@inheritDoc} */
- @Override public Throwable error() {
- return err;
- }
-
/**
- * @param err Error to set.
+ * @param part New Partition ID this message is targeted to.
*/
- public void error(Throwable err) {
- this.err = err;
+ public void partition(int part) {
+ this.part = part;
+ }
+
+ /** {@inheritDoc} */
+ @Override @Nullable public Throwable error() {
+ return ErrorMessage.error(errMsg);
}
/**
- * @return Rollback flag.
+ * @param err Error to set.
*/
- public boolean isRollback() {
- return err != null;
+ public void error(@Nullable Throwable err) {
+ if (err != null)
+ errMsg = new ErrorMessage(err);
}
/** {@inheritDoc} */
@@ -144,104 +118,27 @@ public class GridDistributedTxPrepareResponse extends
GridDistributedBaseMessage
}
/** {@inheritDoc} */
- @Override public void prepareMarshal(GridCacheSharedContext<?, ?> ctx)
throws IgniteCheckedException {
- super.prepareMarshal(ctx);
-
- if (err != null && errBytes == null)
- errBytes = U.marshal(ctx, err);
- }
-
- /** {@inheritDoc} */
- @Override public void finishUnmarshal(GridCacheSharedContext<?, ?> ctx,
ClassLoader ldr) throws IgniteCheckedException {
- super.finishUnmarshal(ctx, ldr);
-
- if (errBytes != null && err == null)
- err = U.unmarshal(ctx, errBytes, U.resolveClassLoader(ldr,
ctx.gridConfig()));
- }
-
- /** {@inheritDoc} */
- @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
- writer.setBuffer(buf);
-
- if (!super.writeTo(buf, writer))
- return false;
-
- if (!writer.isHeaderWritten()) {
- if (!writer.writeHeader(directType()))
- return false;
-
- writer.onHeaderWritten();
- }
-
- switch (writer.state()) {
- case 7:
- if (!writer.writeByteArray(errBytes))
- return false;
-
- writer.incrementState();
-
- case 8:
- if (!writer.writeByte(flags))
- return false;
-
- writer.incrementState();
-
- case 9:
- if (!writer.writeInt(part))
- return false;
-
- writer.incrementState();
-
- }
-
- return true;
+ @Override public short directType() {
+ return 26;
}
- /** {@inheritDoc} */
- @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
- reader.setBuffer(buf);
-
- if (!super.readFrom(buf, reader))
- return false;
-
- switch (reader.state()) {
- case 7:
- errBytes = reader.readByteArray();
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- case 8:
- flags = reader.readByte();
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- case 9:
- part = reader.readInt();
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- }
-
- return true;
+ /**
+ * @return Error message.
+ */
+ public @Nullable ErrorMessage errorMessage() {
+ return errMsg;
}
- /** {@inheritDoc} */
- @Override public short directType() {
- return 26;
+ /**
+ * @param errMsg New error message.
+ */
+ public void errorMessage(@Nullable ErrorMessage errMsg) {
+ this.errMsg = errMsg;
}
/** {@inheritDoc} */
@Override public String toString() {
return
GridToStringBuilder.toString(GridDistributedTxPrepareResponse.class, this,
"err",
- err == null ? "null" : err.toString(), "super", super.toString());
+ error() == null ? "null" : error().toString(), "super",
super.toString());
}
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
index 97f5e35eb3a..5d4cb463892 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
@@ -1921,8 +1921,8 @@ public final class GridDhtTxPrepareFuture extends
GridCacheCompoundFuture<Ignite
}
// Process invalid partitions (no need to remap).
- if (!F.isEmpty(res.invalidPartitionsByCacheId())) {
- Map<Integer, int[]> invalidPartsMap =
res.invalidPartitionsByCacheId();
+ if (!F.isEmpty(res.invalidPartitions())) {
+ Map<Integer, int[]> invalidPartsMap =
res.invalidPartitions();
for (Iterator<IgniteTxEntry> it =
dhtMapping.entries().iterator(); it.hasNext();) {
IgniteTxEntry entry = it.next();
@@ -1951,7 +1951,7 @@ public final class GridDhtTxPrepareFuture extends
GridCacheCompoundFuture<Ignite
boolean rec =
cctx.gridEvents().isRecordable(EVT_CACHE_REBALANCE_OBJECT_LOADED);
- for (GridCacheEntryInfo info : res.preloadEntries()) {
+ for (GridCacheEntryInfo info :
F.emptyIfNull(res.preloadEntries())) {
GridCacheContext<?, ?> cacheCtx =
cctx.cacheContext(info.cacheId());
GridCacheAdapter<?, ?> cache0 = cacheCtx.cache();
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareResponse.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareResponse.java
index 7a42845b099..7d13e13a41d 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareResponse.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareResponse.java
@@ -17,16 +17,12 @@
package org.apache.ignite.internal.processors.cache.distributed.dht;
-import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.internal.GridDirectCollection;
-import org.apache.ignite.internal.GridDirectMap;
+import org.apache.ignite.internal.Order;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
import org.apache.ignite.internal.processors.cache.GridCacheEntryInfo;
import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
@@ -34,12 +30,9 @@ import
org.apache.ignite.internal.processors.cache.distributed.GridDistributedTx
import org.apache.ignite.internal.processors.cache.transactions.IgniteTxKey;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
-import org.apache.ignite.internal.util.typedef.internal.CU;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteUuid;
-import
org.apache.ignite.plugin.extensions.communication.MessageCollectionItemType;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
+import org.jetbrains.annotations.Nullable;
/**
* DHT transaction prepare response.
@@ -47,22 +40,24 @@ import
org.apache.ignite.plugin.extensions.communication.MessageWriter;
public class GridDhtTxPrepareResponse extends GridDistributedTxPrepareResponse
{
/** Evicted readers. */
@GridToStringInclude
- @GridDirectCollection(IgniteTxKey.class)
- private Collection<IgniteTxKey> nearEvicted;
+ @Order(9)
+ private @Nullable Collection<IgniteTxKey> nearEvicted;
/** Future ID. */
+ @Order(value = 10, method = "futureId")
private IgniteUuid futId;
/** Mini future ID. */
+ @Order(11)
private int miniId;
/** Invalid partitions by cache ID. */
- @GridDirectMap(keyType = Integer.class, valueType = int[].class)
- private Map<Integer, int[]> invalidParts;
+ @Order(value = 12, method = "invalidPartitions")
+ private @Nullable Map<Integer, int[]> invalidParts;
- /** Preload entries. */
- @GridDirectCollection(GridCacheEntryInfo.class)
- private List<GridCacheEntryInfo> preloadEntries;
+ /** Preload entries found on backup node. */
+ @Order(13)
+ private @Nullable List<GridCacheEntryInfo> preloadEntries;
/**
* Empty constructor.
@@ -120,14 +115,14 @@ public class GridDhtTxPrepareResponse extends
GridDistributedTxPrepareResponse {
/**
* @return Evicted readers.
*/
- public Collection<IgniteTxKey> nearEvicted() {
+ public @Nullable Collection<IgniteTxKey> nearEvicted() {
return nearEvicted;
}
/**
- * @param nearEvicted Evicted readers.
+ * @param nearEvicted New evicted readers.
*/
- public void nearEvicted(Collection<IgniteTxKey> nearEvicted) {
+ public void nearEvicted(@Nullable Collection<IgniteTxKey> nearEvicted) {
this.nearEvicted = nearEvicted;
}
@@ -138,6 +133,13 @@ public class GridDhtTxPrepareResponse extends
GridDistributedTxPrepareResponse {
return futId;
}
+ /**
+ * @param futId New future ID.
+ */
+ public void futureId(IgniteUuid futId) {
+ this.futId = futId;
+ }
+
/**
* @return Mini future ID.
*/
@@ -146,26 +148,38 @@ public class GridDhtTxPrepareResponse extends
GridDistributedTxPrepareResponse {
}
/**
- * @return Map from cacheId to an array of invalid partitions.
+ * @param miniId New mini future ID.
*/
- Map<Integer, int[]> invalidPartitionsByCacheId() {
+ public void miniId(int miniId) {
+ this.miniId = miniId;
+ }
+
+ /**
+ * @return Invalid partitions by cache ID.
+ */
+ public @Nullable Map<Integer, int[]> invalidPartitions() {
return invalidParts;
}
/**
- * @param invalidPartsByCacheId Map from cache ID to an array of invalid
partitions.
+ * @param invalidParts New invalid partitions by cache ID.
*/
- public void invalidPartitionsByCacheId(Map<Integer, Set<Integer>>
invalidPartsByCacheId) {
- invalidParts = CU.convertInvalidPartitions(invalidPartsByCacheId);
+ public void invalidPartitions(@Nullable Map<Integer, int[]> invalidParts) {
+ this.invalidParts = invalidParts;
}
/**
- * Gets preload entries found on backup node.
- *
- * @return Collection of entry infos need to be preloaded.
+ * @return Preload entries found on backup node.
+ */
+ public @Nullable Collection<GridCacheEntryInfo> preloadEntries() {
+ return preloadEntries;
+ }
+
+ /**
+ * @param preloadEntries New preload entries found on backup node.
*/
- Collection<GridCacheEntryInfo> preloadEntries() {
- return preloadEntries == null ? Collections.emptyList() :
preloadEntries;
+ public void preloadEntries(@Nullable List<GridCacheEntryInfo>
preloadEntries) {
+ this.preloadEntries = preloadEntries;
}
/**
@@ -226,109 +240,6 @@ public class GridDhtTxPrepareResponse extends
GridDistributedTxPrepareResponse {
}
}
- /** {@inheritDoc} */
- @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
- writer.setBuffer(buf);
-
- if (!super.writeTo(buf, writer))
- return false;
-
- if (!writer.isHeaderWritten()) {
- if (!writer.writeHeader(directType()))
- return false;
-
- writer.onHeaderWritten();
- }
-
- switch (writer.state()) {
- case 10:
- if (!writer.writeIgniteUuid(futId))
- return false;
-
- writer.incrementState();
-
- case 11:
- if (!writer.writeMap(invalidParts,
MessageCollectionItemType.INT, MessageCollectionItemType.INT_ARR))
- return false;
-
- writer.incrementState();
-
- case 12:
- if (!writer.writeInt(miniId))
- return false;
-
- writer.incrementState();
-
- case 13:
- if (!writer.writeCollection(nearEvicted,
MessageCollectionItemType.MSG))
- return false;
-
- writer.incrementState();
-
- case 14:
- if (!writer.writeCollection(preloadEntries,
MessageCollectionItemType.MSG))
- return false;
-
- writer.incrementState();
-
- }
-
- return true;
- }
-
- /** {@inheritDoc} */
- @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
- reader.setBuffer(buf);
-
- if (!super.readFrom(buf, reader))
- return false;
-
- switch (reader.state()) {
- case 10:
- futId = reader.readIgniteUuid();
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- case 11:
- invalidParts = reader.readMap(MessageCollectionItemType.INT,
MessageCollectionItemType.INT_ARR, false);
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- case 12:
- miniId = reader.readInt();
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- case 13:
- nearEvicted =
reader.readCollection(MessageCollectionItemType.MSG);
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- case 14:
- preloadEntries =
reader.readCollection(MessageCollectionItemType.MSG);
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- }
-
- return true;
- }
-
/** {@inheritDoc} */
@Override public short directType() {
return 35;
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
index ee1ec02e8b4..27c01c51658 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
@@ -1245,8 +1245,8 @@ public final class GridNearLockFuture extends
GridCacheCompoundIdentityFuture<Bo
// returned value if any.
entry.resetFromPrimary(newVal,
lockVer, dhtVer, node.id(), topVer);
- entry.readyNearLock(lockVer,
mappedVer, res.committedVersions(),
- res.rolledbackVersions(),
res.pending());
+ entry.readyNearLock(lockVer,
mappedVer, F.emptyIfNull(res.committedVersions()),
+
F.emptyIfNull(res.rolledbackVersions()), res.pending());
if (inTx() && implicitTx() &&
tx.onePhaseCommit()) {
boolean pass = res.filterResult(i);
@@ -1671,8 +1671,8 @@ public final class GridNearLockFuture extends
GridCacheCompoundIdentityFuture<Bo
entry.readyNearLock(lockVer,
mappedVer,
- res.committedVersions(),
- res.rolledbackVersions(),
+ F.emptyIfNull(res.committedVersions()),
+ F.emptyIfNull(res.rolledbackVersions()),
res.pending());
if (retval) {
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java
index bd6dab6f579..d084ea3f335 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java
@@ -228,8 +228,8 @@ public class GridNearTransactionalCache<K, V> extends
GridNearCacheAdapter<K, V>
req.version(),
req.version(),
null,
- req.committedVersions(),
- req.rolledbackVersions(),
+ F.emptyIfNull(req.committedVersions()),
+ F.emptyIfNull(req.rolledbackVersions()),
/*system invalidate*/false);
// Note that we don't reorder completed versions
here,
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 eac1bb81d3c..4c6ace62bf1 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
@@ -38,6 +38,7 @@ import
org.apache.ignite.internal.processors.cache.transactions.IgniteTxKey;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
+import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.CU;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteReducer;
@@ -247,7 +248,7 @@ public abstract class GridNearTxPrepareFutureAdapter extends
tx.implicitSingleResult(res.returnValue());
- for (IgniteTxKey key : res.filterFailedKeys()) {
+ for (IgniteTxKey key : F.emptyIfNull(res.filterFailedKeys())) {
IgniteTxEntry txEntry = tx.entry(key);
assert txEntry != null : "Missing tx entry for write key: " + key;
@@ -280,7 +281,8 @@ public abstract class GridNearTxPrepareFutureAdapter extends
if (map != null)
map.dhtVersion(res.dhtVersion(), writeVer);
- tx.readyNearLocks(m, res.pending(), res.committedVersions(),
res.rolledbackVersions());
+ tx.readyNearLocks(m, F.emptyIfNull(res.pending()),
F.emptyIfNull(res.committedVersions()),
+ F.emptyIfNull(res.rolledbackVersions()));
}
}
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareResponse.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareResponse.java
index 666b18c8dcd..8d1ec23b760 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareResponse.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareResponse.java
@@ -17,15 +17,13 @@
package org.apache.ignite.internal.processors.cache.distributed.near;
-import java.nio.ByteBuffer;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.internal.GridDirectCollection;
-import org.apache.ignite.internal.GridDirectTransient;
+import org.apache.ignite.internal.Order;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
@@ -34,64 +32,65 @@ import
org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
import
org.apache.ignite.internal.processors.cache.distributed.GridDistributedTxPrepareResponse;
import org.apache.ignite.internal.processors.cache.transactions.IgniteTxKey;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
-import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
+import org.apache.ignite.internal.util.typedef.F;
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.MessageCollectionItemType;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
import org.jetbrains.annotations.Nullable;
/**
* Near cache prepare response.
*/
public class GridNearTxPrepareResponse extends
GridDistributedTxPrepareResponse {
- /** Tx onePhaseCommit flag on primary node. */
- private static final int NEAR_PREPARE_ONE_PHASE_COMMIT_FLAG_MASK = 0x01;
-
- /** Collection of versions that are pending and less than lock version. */
+ /** Versions that are less than lock version ({@link #version()}). */
@GridToStringInclude
- @GridDirectCollection(GridCacheVersion.class)
- private Collection<GridCacheVersion> pending;
+ @Order(9)
+ private @Nullable Collection<GridCacheVersion> pending;
/** Future ID. */
+ @Order(value = 10, method = "futureId")
private IgniteUuid futId;
/** Mini future ID. */
+ @Order(11)
private int miniId;
/** DHT version. */
+ @Order(value = 12, method = "dhtVersion")
private GridCacheVersion dhtVer;
/** Write version. */
+ @Order(value = 13, method = "writeVersion")
private GridCacheVersion writeVer;
/** Map of owned values to set on near node. */
@GridToStringInclude
- @GridDirectTransient
private Map<IgniteTxKey, CacheVersionedValue> ownedVals;
/** OwnedVals' keys for marshalling. */
- @GridToStringExclude
- @GridDirectCollection(IgniteTxKey.class)
- private Collection<IgniteTxKey> ownedValKeys;
+ @Order(value = 14, method = "ownedValuesKeys")
+ private @Nullable Collection<IgniteTxKey> ownedValKeys;
/** OwnedVals' values for marshalling. */
- @GridToStringExclude
- @GridDirectCollection(CacheVersionedValue.class)
- private Collection<CacheVersionedValue> ownedValVals;
+ @Order(value = 15, method = "ownedValuesValues")
+ private @Nullable Collection<CacheVersionedValue> ownedValVals;
/** Cache return value. */
+ @Order(value = 16, method = "returnValue")
private GridCacheReturn retVal;
- /** Filter failed keys. */
- @GridDirectCollection(IgniteTxKey.class)
- private Collection<IgniteTxKey> filterFailedKeys;
+ /** Keys that did not pass the filter. */
+ @Order(17)
+ private @Nullable Collection<IgniteTxKey> filterFailedKeys;
+
+ /** Topology version, which is set when client node should remap lock
request. */
+ @Order(value = 18, method = "clientRemapVersion")
+ private @Nullable AffinityTopologyVersion clientRemapVer;
- /** Not {@code null} if client node should remap transaction. */
- private AffinityTopologyVersion clientRemapVer;
+ /** One-phase commit on primary flag. */
+ @Order(19)
+ private boolean onePhaseCommit;
/**
* Empty constructor.
@@ -120,8 +119,8 @@ public class GridNearTxPrepareResponse extends
GridDistributedTxPrepareResponse
GridCacheVersion dhtVer,
GridCacheVersion writeVer,
GridCacheReturn retVal,
- Throwable err,
- AffinityTopologyVersion clientRemapVer,
+ @Nullable Throwable err,
+ @Nullable AffinityTopologyVersion clientRemapVer,
boolean onePhaseCommit,
boolean addDepInfo
) {
@@ -136,40 +135,48 @@ public class GridNearTxPrepareResponse extends
GridDistributedTxPrepareResponse
this.writeVer = writeVer;
this.retVal = retVal;
this.clientRemapVer = clientRemapVer;
-
- if (onePhaseCommit)
- flags |= NEAR_PREPARE_ONE_PHASE_COMMIT_FLAG_MASK;
+ this.onePhaseCommit = onePhaseCommit;
}
/**
- * @return One-phase commit state on primary node.
+ * @return One-phase commit on primary flag.
*/
public boolean onePhaseCommit() {
- return isFlag(NEAR_PREPARE_ONE_PHASE_COMMIT_FLAG_MASK);
+ return onePhaseCommit;
+ }
+
+ /**
+ * @param onePhaseCommit New one-phase commit on primary flag.
+ */
+ public void onePhaseCommit(boolean onePhaseCommit) {
+ this.onePhaseCommit = onePhaseCommit;
}
/**
- * @return {@code True} if client node should remap transaction.
+ * @return Topology version, which is set when client node should remap
lock request.
*/
- @Nullable AffinityTopologyVersion clientRemapVersion() {
+ @Nullable public AffinityTopologyVersion clientRemapVersion() {
return clientRemapVer;
}
/**
- * Gets pending versions that are less than {@link #version()}.
- *
- * @return Pending versions.
+ * @param clientRemapVer New topology version, which is set when client
node should remap lock request.
*/
- public Collection<GridCacheVersion> pending() {
- return pending == null ? Collections.emptyList() : pending;
+ public void clientRemapVersion(@Nullable AffinityTopologyVersion
clientRemapVer) {
+ this.clientRemapVer = clientRemapVer;
}
/**
- * Sets pending versions that are less than {@link #version()}.
- *
- * @param pending Pending versions.
+ * @return Versions that are less than lock version ({@link #version()}).
+ */
+ public @Nullable Collection<GridCacheVersion> pending() {
+ return pending;
+ }
+
+ /**
+ * @param pending New versions that are less than lock version ({@link
#version()}).
*/
- public void pending(Collection<GridCacheVersion> pending) {
+ public void pending(@Nullable Collection<GridCacheVersion> pending) {
this.pending = pending;
}
@@ -180,6 +187,13 @@ public class GridNearTxPrepareResponse extends
GridDistributedTxPrepareResponse
return miniId;
}
+ /**
+ * @param miniId New mini future ID.
+ */
+ public void miniId(int miniId) {
+ this.miniId = miniId;
+ }
+
/**
* @return Future ID.
*/
@@ -187,6 +201,13 @@ public class GridNearTxPrepareResponse extends
GridDistributedTxPrepareResponse
return futId;
}
+ /**
+ * @param futId New future ID.
+ */
+ public void futureId(IgniteUuid futId) {
+ this.futId = futId;
+ }
+
/**
* @return DHT version.
*/
@@ -194,6 +215,13 @@ public class GridNearTxPrepareResponse extends
GridDistributedTxPrepareResponse
return dhtVer;
}
+ /**
+ * @param dhtVer New DHT version.
+ */
+ public void dhtVersion(GridCacheVersion dhtVer) {
+ this.dhtVer = dhtVer;
+ }
+
/**
* @return Write version.
*/
@@ -201,6 +229,13 @@ public class GridNearTxPrepareResponse extends
GridDistributedTxPrepareResponse
return writeVer;
}
+ /**
+ * @param writeVer New write version.
+ */
+ public void writeVersion(GridCacheVersion writeVer) {
+ this.writeVer = writeVer;
+ }
+
/**
* Adds owned value.
*
@@ -221,31 +256,38 @@ public class GridNearTxPrepareResponse extends
GridDistributedTxPrepareResponse
}
/**
- * @return Owned values map.
+ * @return Map of owned values to set on near node.
*/
public Map<IgniteTxKey, CacheVersionedValue> ownedValues() {
return ownedVals == null ? Collections.emptyMap() :
Collections.unmodifiableMap(ownedVals);
}
/**
- * @return Return value.
+ * @return Cache return value.
*/
public GridCacheReturn returnValue() {
return retVal;
}
/**
- * @param filterFailedKeys Collection of keys that did not pass the filter.
+ * @param retVal New cache return value.
+ */
+ public void returnValue(GridCacheReturn retVal) {
+ this.retVal = retVal;
+ }
+
+ /**
+ * @param filterFailedKeys Keys that did not pass the filter.
*/
- public void filterFailedKeys(Collection<IgniteTxKey> filterFailedKeys) {
+ public void filterFailedKeys(@Nullable Collection<IgniteTxKey>
filterFailedKeys) {
this.filterFailedKeys = filterFailedKeys;
}
/**
- * @return Collection of keys that did not pass the filter.
+ * @return New keys that did not pass the filter.
*/
- public Collection<IgniteTxKey> filterFailedKeys() {
- return filterFailedKeys == null ? Collections.emptyList() :
filterFailedKeys;
+ public @Nullable Collection<IgniteTxKey> filterFailedKeys() {
+ return filterFailedKeys;
}
/**
@@ -253,14 +295,46 @@ public class GridNearTxPrepareResponse extends
GridDistributedTxPrepareResponse
* @return {@code True} if response has owned value for given key.
*/
public boolean hasOwnedValue(IgniteTxKey key) {
- return ownedVals != null && ownedVals.containsKey(key);
+ return F.mapContainsKey(ownedVals, key);
+ }
+
+ /**
+ * @return OwnedVals' keys for marshalling.
+ */
+ public @Nullable Collection<IgniteTxKey> ownedValuesKeys() {
+ return ownedValKeys;
+ }
+
+ /**
+ * @param ownedValKeys New ownedVals' keys for marshalling.
+ */
+ public void ownedValuesKeys(@Nullable Collection<IgniteTxKey>
ownedValKeys) {
+ this.ownedValKeys = ownedValKeys;
+ }
+
+ /**
+ * @return OwnedVals' values for marshalling.
+ */
+ public @Nullable Collection<CacheVersionedValue> ownedValuesValues() {
+ return ownedValVals;
}
- /** {@inheritDoc}
- * @param ctx*/
+ /**
+ * @param ownedValVals New ownedVals' values for marshalling.
+ */
+ public void ownedValuesValues(@Nullable Collection<CacheVersionedValue>
ownedValVals) {
+ this.ownedValVals = ownedValVals;
+ }
+
+ /** {@inheritDoc} */
@Override public void prepareMarshal(GridCacheSharedContext<?, ?> ctx)
throws IgniteCheckedException {
super.prepareMarshal(ctx);
+ // There are separate collections for keys and values of the
'ownedVals' map, because IgniteTxKey
+ // can not be inserted directly in a map as a key during invocation of
MessageReader#read.
+ // The IgniteTxKey's hash code calculation will fail due to delegation
of calculation
+ // to KeyCacheObjectImpl#hashCode, which in turn fails with assertion
error if KeyCacheObjectImpl#val
+ // has not initialized yet in KeyCacheObjectImpl#finishUnmarshal.
if (ownedVals != null && ownedValKeys == null) {
ownedValKeys = ownedVals.keySet();
@@ -296,6 +370,11 @@ public class GridNearTxPrepareResponse extends
GridDistributedTxPrepareResponse
@Override public void finishUnmarshal(GridCacheSharedContext<?, ?> ctx,
ClassLoader ldr) throws IgniteCheckedException {
super.finishUnmarshal(ctx, ldr);
+ // There are separate collections for keys and values of the
'ownedVals' map, because IgniteTxKey
+ // can not be inserted directly in a map as a key during invocation of
MessageReader#read.
+ // The IgniteTxKey's hash code calculation will fail due to delegation
of calculation
+ // to KeyCacheObjectImpl#hashCode, which in turn fails with assertion
error if KeyCacheObjectImpl#val
+ // has not initialized yet in KeyCacheObjectImpl#finishUnmarshal.
if (ownedValKeys != null && ownedVals == null) {
ownedVals = U.newHashMap(ownedValKeys.size());
@@ -329,7 +408,7 @@ public class GridNearTxPrepareResponse extends
GridDistributedTxPrepareResponse
}
if (filterFailedKeys != null) {
- for (IgniteTxKey key :filterFailedKeys) {
+ for (IgniteTxKey key : filterFailedKeys) {
GridCacheContext<?, ?> cctx = ctx.cacheContext(key.cacheId());
key.finishUnmarshal(cctx, ldr);
@@ -337,177 +416,6 @@ public class GridNearTxPrepareResponse extends
GridDistributedTxPrepareResponse
}
}
- /** {@inheritDoc} */
- @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
- writer.setBuffer(buf);
-
- if (!super.writeTo(buf, writer))
- return false;
-
- if (!writer.isHeaderWritten()) {
- if (!writer.writeHeader(directType()))
- return false;
-
- writer.onHeaderWritten();
- }
-
- switch (writer.state()) {
- case 10:
- if (!writer.writeAffinityTopologyVersion(clientRemapVer))
- return false;
-
- writer.incrementState();
-
- case 11:
- if (!writer.writeMessage(dhtVer))
- return false;
-
- writer.incrementState();
-
- case 12:
- if (!writer.writeCollection(filterFailedKeys,
MessageCollectionItemType.MSG))
- return false;
-
- writer.incrementState();
-
- case 13:
- if (!writer.writeIgniteUuid(futId))
- return false;
-
- writer.incrementState();
-
- case 14:
- if (!writer.writeInt(miniId))
- return false;
-
- writer.incrementState();
-
- case 15:
- if (!writer.writeCollection(ownedValKeys,
MessageCollectionItemType.MSG))
- return false;
-
- writer.incrementState();
-
- case 16:
- if (!writer.writeCollection(ownedValVals,
MessageCollectionItemType.MSG))
- return false;
-
- writer.incrementState();
-
- case 17:
- if (!writer.writeCollection(pending,
MessageCollectionItemType.MSG))
- return false;
-
- writer.incrementState();
-
- case 18:
- if (!writer.writeMessage(retVal))
- return false;
-
- writer.incrementState();
-
- case 19:
- if (!writer.writeMessage(writeVer))
- return false;
-
- writer.incrementState();
- }
-
- return true;
- }
-
- /** {@inheritDoc} */
- @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
- reader.setBuffer(buf);
-
- if (!super.readFrom(buf, reader))
- return false;
-
- switch (reader.state()) {
- case 10:
- clientRemapVer = reader.readAffinityTopologyVersion();
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- case 11:
- dhtVer = reader.readMessage();
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- case 12:
- filterFailedKeys =
reader.readCollection(MessageCollectionItemType.MSG);
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- case 13:
- futId = reader.readIgniteUuid();
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- case 14:
- miniId = reader.readInt();
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- case 15:
- ownedValKeys =
reader.readCollection(MessageCollectionItemType.MSG);
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- case 16:
- ownedValVals =
reader.readCollection(MessageCollectionItemType.MSG);
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- case 17:
- pending = reader.readCollection(MessageCollectionItemType.MSG);
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- case 18:
- retVal = reader.readMessage();
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- case 19:
- writeVer = reader.readMessage();
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
- }
-
- return true;
- }
-
/** {@inheritDoc} */
@Override public short directType() {
return 56;
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 e7db4d35009..989065fa15b 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
@@ -1228,7 +1228,7 @@ public class IgniteTxHandler {
req.txState(nearTx.txState());
if (dhtTx != null && !F.isEmpty(dhtTx.invalidPartitions()))
- res.invalidPartitionsByCacheId(dhtTx.invalidPartitions());
+
res.invalidPartitions(CU.convertInvalidPartitions(dhtTx.invalidPartitions()));
if (req.onePhaseCommit()) {
assert req.last();
@@ -1856,7 +1856,7 @@ public class IgniteTxHandler {
tx.state(PREPARED);
}
- res.invalidPartitionsByCacheId(tx.invalidPartitions());
+
res.invalidPartitions(CU.convertInvalidPartitions(tx.invalidPartitions()));
if (tx.empty() && req.last()) {
tx.skipCompletedVersions(req.skipCompletedVersion());
diff --git a/modules/core/src/main/resources/META-INF/classnames.properties
b/modules/core/src/main/resources/META-INF/classnames.properties
index ce5be10be7d..8b4f49c41ad 100644
--- a/modules/core/src/main/resources/META-INF/classnames.properties
+++ b/modules/core/src/main/resources/META-INF/classnames.properties
@@ -1151,7 +1151,6 @@
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomic
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicSingleUpdateRequest
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicUpdateRequest
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicUpdateResponse
-org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractSingleUpdateRequest
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture$1
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture$DhtLeftResult
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture$UpdateReplyClosureContextAware