[1/2] ignite git commit: IGNITE-7871 Implemented additional synchronization phase for correct partition counters update
Repository: ignite Updated Branches: refs/heads/ignite-2.5 b4cb2f0df -> b4cc9f2d4 http://git-wip-us.apache.org/repos/asf/ignite/blob/b4cc9f2d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/latch/LatchAckMessage.java -- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/latch/LatchAckMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/latch/LatchAckMessage.java new file mode 100644 index 000..bad1b61 --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/latch/LatchAckMessage.java @@ -0,0 +1,165 @@ +/* + * 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.processors.cache.distributed.dht.preloader.latch; + +import java.nio.ByteBuffer; +import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion; +import org.apache.ignite.plugin.extensions.communication.Message; +import org.apache.ignite.plugin.extensions.communication.MessageReader; +import org.apache.ignite.plugin.extensions.communication.MessageWriter; + +/** + * Message is used to send acks for {@link Latch} instances management. + */ +public class LatchAckMessage implements Message { +/** */ +private static final long serialVersionUID = 0L; + +/** Latch id. */ +private String latchId; + +/** Latch topology version. */ +private AffinityTopologyVersion topVer; + +/** Flag indicates that ack is final. */ +private boolean isFinal; + +/** + * Constructor. + * + * @param latchId Latch id. + * @param topVer Latch topology version. + * @param isFinal Final acknowledgement flag. + */ +public LatchAckMessage(String latchId, AffinityTopologyVersion topVer, boolean isFinal) { +this.latchId = latchId; +this.topVer = topVer; +this.isFinal = isFinal; +} + +/** + * Empty constructor for marshalling purposes. + */ +public LatchAckMessage() { +} + +/** + * @return Latch id. + */ +public String latchId() { +return latchId; +} + +/** + * @return Latch topology version. + */ +public AffinityTopologyVersion topVer() { +return topVer; +} + +/** + * @return {@code} if ack is final. + */ +public boolean isFinal() { +return isFinal; +} + +/** {@inheritDoc} */ +@Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) { +writer.setBuffer(buf); + +if (!writer.isHeaderWritten()) { +if (!writer.writeHeader(directType(), fieldsCount())) +return false; + +writer.onHeaderWritten(); +} + +switch (writer.state()) { +case 0: +if (!writer.writeBoolean("isFinal", isFinal)) +return false; + +writer.incrementState(); + +case 1: +if (!writer.writeString("latchId", latchId)) +return false; + +writer.incrementState(); + +case 2: +if (!writer.writeMessage("topVer", topVer)) +return false; + +writer.incrementState(); +} + +return true; +} + +/** {@inheritDoc} */ +@Override public boolean readFrom(ByteBuffer buf, MessageReader reader) { +reader.setBuffer(buf); + +if (!reader.beforeMessageRead()) +return false; + +switch (reader.state()) { +case 0: +isFinal = reader.readBoolean("isFinal"); + +if (!reader.isLastRead()) +return false; + +reader.incrementState(); + +case 1: +latchId = reader.readString("latchId"); + +if (!reader.isLastRead()) +return false; + +reader.incrementState(); + +case 2: +topVer = reader.readMessage("topVer"); + +if
[1/2] ignite git commit: IGNITE-7871 Implemented additional synchronization phase for correct partition counters update
Repository: ignite Updated Branches: refs/heads/master f4de6df71 -> da77b9818 http://git-wip-us.apache.org/repos/asf/ignite/blob/da77b981/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/latch/LatchAckMessage.java -- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/latch/LatchAckMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/latch/LatchAckMessage.java new file mode 100644 index 000..bad1b61 --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/latch/LatchAckMessage.java @@ -0,0 +1,165 @@ +/* + * 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.processors.cache.distributed.dht.preloader.latch; + +import java.nio.ByteBuffer; +import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion; +import org.apache.ignite.plugin.extensions.communication.Message; +import org.apache.ignite.plugin.extensions.communication.MessageReader; +import org.apache.ignite.plugin.extensions.communication.MessageWriter; + +/** + * Message is used to send acks for {@link Latch} instances management. + */ +public class LatchAckMessage implements Message { +/** */ +private static final long serialVersionUID = 0L; + +/** Latch id. */ +private String latchId; + +/** Latch topology version. */ +private AffinityTopologyVersion topVer; + +/** Flag indicates that ack is final. */ +private boolean isFinal; + +/** + * Constructor. + * + * @param latchId Latch id. + * @param topVer Latch topology version. + * @param isFinal Final acknowledgement flag. + */ +public LatchAckMessage(String latchId, AffinityTopologyVersion topVer, boolean isFinal) { +this.latchId = latchId; +this.topVer = topVer; +this.isFinal = isFinal; +} + +/** + * Empty constructor for marshalling purposes. + */ +public LatchAckMessage() { +} + +/** + * @return Latch id. + */ +public String latchId() { +return latchId; +} + +/** + * @return Latch topology version. + */ +public AffinityTopologyVersion topVer() { +return topVer; +} + +/** + * @return {@code} if ack is final. + */ +public boolean isFinal() { +return isFinal; +} + +/** {@inheritDoc} */ +@Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) { +writer.setBuffer(buf); + +if (!writer.isHeaderWritten()) { +if (!writer.writeHeader(directType(), fieldsCount())) +return false; + +writer.onHeaderWritten(); +} + +switch (writer.state()) { +case 0: +if (!writer.writeBoolean("isFinal", isFinal)) +return false; + +writer.incrementState(); + +case 1: +if (!writer.writeString("latchId", latchId)) +return false; + +writer.incrementState(); + +case 2: +if (!writer.writeMessage("topVer", topVer)) +return false; + +writer.incrementState(); +} + +return true; +} + +/** {@inheritDoc} */ +@Override public boolean readFrom(ByteBuffer buf, MessageReader reader) { +reader.setBuffer(buf); + +if (!reader.beforeMessageRead()) +return false; + +switch (reader.state()) { +case 0: +isFinal = reader.readBoolean("isFinal"); + +if (!reader.isLastRead()) +return false; + +reader.incrementState(); + +case 1: +latchId = reader.readString("latchId"); + +if (!reader.isLastRead()) +return false; + +reader.incrementState(); + +case 2: +topVer = reader.readMessage("topVer"); + +if (!reader.isLastRead()) +