diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java index 753f00569c5cf..ac5d63605256b 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java @@ -18,6 +18,8 @@ package org.apache.ignite.internal.managers.discovery; import org.apache.ignite.internal.codegen.DiscoveryDataPacketSerializer; +import org.apache.ignite.internal.codegen.DistributedMetaStorageCasAckMessageSerializer; +import org.apache.ignite.internal.codegen.DistributedMetaStorageUpdateAckMessageSerializer; import org.apache.ignite.internal.codegen.InetAddressMessageSerializer; import org.apache.ignite.internal.codegen.InetSocketAddressMessageSerializer; import org.apache.ignite.internal.codegen.NodeSpecificDataSerializer; @@ -45,6 +47,8 @@ import org.apache.ignite.internal.codegen.TcpDiscoveryPingResponseSerializer; import org.apache.ignite.internal.codegen.TcpDiscoveryRingLatencyCheckMessageSerializer; import org.apache.ignite.internal.codegen.TcpDiscoveryStatusCheckMessageSerializer; +import org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageCasAckMessage; +import org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageUpdateAckMessage; import org.apache.ignite.plugin.extensions.communication.MessageFactory; import org.apache.ignite.plugin.extensions.communication.MessageFactoryProvider; import org.apache.ignite.spi.discovery.tcp.internal.DiscoveryDataPacket; @@ -110,5 +114,7 @@ public class DiscoveryMessageFactory implements MessageFactoryProvider { factory.register((short)17, TcpDiscoveryNodeFailedMessage::new, new TcpDiscoveryNodeFailedMessageSerializer()); factory.register((short)18, TcpDiscoveryStatusCheckMessage::new, new TcpDiscoveryStatusCheckMessageSerializer()); factory.register((short)19, TcpDiscoveryNodeAddFinishedMessage::new, new TcpDiscoveryNodeAddFinishedMessageSerializer()); + factory.register((short)20, DistributedMetaStorageUpdateAckMessage::new, new DistributedMetaStorageUpdateAckMessageSerializer()); + factory.register((short)21, DistributedMetaStorageCasAckMessage::new, new DistributedMetaStorageCasAckMessageSerializer()); } } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageCasAckMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageCasAckMessage.java index 30dda350ec66a..50b099512dd8e 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageCasAckMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageCasAckMessage.java @@ -18,19 +18,27 @@ package org.apache.ignite.internal.processors.metastorage.persistence; import java.util.UUID; +import org.apache.ignite.internal.Order; +import org.apache.ignite.internal.managers.discovery.DiscoveryMessageFactory; import org.apache.ignite.internal.util.typedef.internal.S; /** */ -class DistributedMetaStorageCasAckMessage extends DistributedMetaStorageUpdateAckMessage { +public class DistributedMetaStorageCasAckMessage extends DistributedMetaStorageUpdateAckMessage { /** */ private static final long serialVersionUID = 0L; /** */ - private final boolean updated; + @Order(2) + private boolean updated; + + /** Empty constructor of {@link DiscoveryMessageFactory}. */ + public DistributedMetaStorageCasAckMessage() { + // No-op. + } /** */ - public DistributedMetaStorageCasAckMessage(UUID reqId, String errorMsg, boolean updated) { - super(reqId, errorMsg); + public DistributedMetaStorageCasAckMessage(UUID reqId, boolean updated) { + super(reqId); this.updated = updated; } @@ -40,6 +48,16 @@ public boolean updated() { return updated; } + /** */ + public void updated(boolean updated) { + this.updated = updated; + } + + /** {@inheritDoc} */ + @Override public short directType() { + return 21; + } + /** {@inheritDoc} */ @Override public String toString() { return S.toString(DistributedMetaStorageCasAckMessage.class, this); diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageCasMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageCasMessage.java index fa279596cba85..88f64122892d4 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageCasMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageCasMessage.java @@ -57,7 +57,7 @@ public boolean matches() { /** {@inheritDoc} */ @Override @Nullable public DiscoveryCustomMessage ackMessage() { - return new DistributedMetaStorageCasAckMessage(requestId(), errorMessage(), matches); + return new DistributedMetaStorageCasAckMessage(requestId(), matches); } /** {@inheritDoc} */ diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageImpl.java index 147b98ceead25..c9c0d6c49f9a1 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageImpl.java @@ -1128,9 +1128,6 @@ private void onUpdateMessage( ClusterNode node, DistributedMetaStorageUpdateMessage msg ) { - if (msg.errorMessage() != null) - return; - lock.writeLock().lock(); try { @@ -1166,17 +1163,11 @@ private void onAckMessage( GridFutureAdapter fut = updateFuts.remove(msg.requestId()); if (fut != null) { - String errorMsg = msg.errorMessage(); - - if (errorMsg == null) { - Boolean res = msg instanceof DistributedMetaStorageCasAckMessage - ? ((DistributedMetaStorageCasAckMessage)msg).updated() - : null; + Boolean res = msg instanceof DistributedMetaStorageCasAckMessage + ? ((DistributedMetaStorageCasAckMessage)msg).updated() + : null; - fut.onDone(res); - } - else - fut.onDone(new IllegalStateException(errorMsg)); + fut.onDone(res); } } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageUpdateAckMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageUpdateAckMessage.java index 9008f8b72579e..313cf5038a486 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageUpdateAckMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageUpdateAckMessage.java @@ -18,32 +18,39 @@ package org.apache.ignite.internal.processors.metastorage.persistence; import java.util.UUID; +import org.apache.ignite.internal.Order; import org.apache.ignite.internal.managers.discovery.DiscoCache; import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage; +import org.apache.ignite.internal.managers.discovery.DiscoveryMessageFactory; import org.apache.ignite.internal.managers.discovery.GridDiscoveryManager; import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion; import org.apache.ignite.internal.util.typedef.internal.S; import org.apache.ignite.lang.IgniteUuid; +import org.apache.ignite.plugin.extensions.communication.Message; import org.jetbrains.annotations.Nullable; /** */ -class DistributedMetaStorageUpdateAckMessage implements DiscoveryCustomMessage { +public class DistributedMetaStorageUpdateAckMessage implements DiscoveryCustomMessage, Message { /** */ private static final long serialVersionUID = 0L; /** */ - private final IgniteUuid id = IgniteUuid.randomUuid(); + @Order(0) + private IgniteUuid id; /** Request ID. */ - private final UUID reqId; + @Order(value = 1, method = "requestId") + private UUID reqId; - /** */ - private final String errorMsg; + /** Empty constructor of {@link DiscoveryMessageFactory}. */ + public DistributedMetaStorageUpdateAckMessage() { + // No-op. + } /** */ - public DistributedMetaStorageUpdateAckMessage(UUID reqId, String errorMsg) { + public DistributedMetaStorageUpdateAckMessage(UUID reqId) { + id = IgniteUuid.randomUuid(); this.reqId = reqId; - this.errorMsg = errorMsg; } /** {@inheritDoc} */ @@ -51,14 +58,19 @@ public DistributedMetaStorageUpdateAckMessage(UUID reqId, String errorMsg) { return id; } - /** */ + /** @param id Message id. */ + public void id(IgniteUuid id) { + this.id = id; + } + + /** @return Request ID. */ public UUID requestId() { return reqId; } - /** */ - public String errorMessage() { - return errorMsg; + /** @param reqId Request ID. */ + public void requestId(UUID reqId) { + this.reqId = reqId; } /** {@inheritDoc} */ @@ -80,6 +92,11 @@ public String errorMessage() { throw new UnsupportedOperationException(); } + /** {@inheritDoc} */ + @Override public short directType() { + return 20; + } + /** {@inheritDoc} */ @Override public String toString() { return S.toString(DistributedMetaStorageUpdateAckMessage.class, this); diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageUpdateMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageUpdateMessage.java index 74dc88f6ade34..7ea5a8a21a60e 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageUpdateMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageUpdateMessage.java @@ -46,9 +46,6 @@ class DistributedMetaStorageUpdateMessage implements DiscoveryCustomMessage { /** */ private final byte[] valBytes; - /** */ - private String errorMsg; - /** */ public DistributedMetaStorageUpdateMessage(UUID reqId, String key, byte[] valBytes) { this.reqId = reqId; @@ -81,19 +78,9 @@ public boolean isAckMessage() { return false; } - /** */ - public void errorMessage(String errorMsg) { - this.errorMsg = errorMsg; - } - - /** */ - protected String errorMessage() { - return errorMsg; - } - /** {@inheritDoc} */ @Override @Nullable public DiscoveryCustomMessage ackMessage() { - return new DistributedMetaStorageUpdateAckMessage(reqId, errorMsg); + return new DistributedMetaStorageUpdateAckMessage(reqId); } /** {@inheritDoc} */