This is an automated email from the ASF dual-hosted git repository.
rpuch pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new d48115f9d3 IGNITE-23385 Move fields added to SnapshotMeta from JRaft
to our own message (#4720)
d48115f9d3 is described below
commit d48115f9d33b3e70a1a91647d99d4562a652c350
Author: Roman Puchkovskiy <[email protected]>
AuthorDate: Thu Nov 14 14:36:50 2024 +0400
IGNITE-23385 Move fields added to SnapshotMeta from JRaft to our own
message (#4720)
---
.../network/PartitionReplicationMessageGroup.java | 6 ++++++
...shotMetaResponse.java => PartitionSnapshotMeta.java} | 17 +++++++++++------
.../replicator/network/raft/SnapshotMetaResponse.java | 3 +--
.../org/apache/ignite/raft/jraft/entity/RaftOutter.java | 6 ------
.../raft/snapshot/incoming/IncomingSnapshotCopier.java | 5 +++--
.../raft/snapshot/incoming/IncomingSnapshotReader.java | 5 +++--
.../raft/snapshot/outgoing/OutgoingSnapshot.java | 12 ++++++------
.../raft/snapshot/outgoing/SnapshotMetaUtils.java | 9 +++++----
.../snapshot/incoming/IncomingSnapshotReaderTest.java | 4 ++--
.../raft/snapshot/outgoing/SnapshotMetaUtilsTest.java | 6 +++---
.../internal/worker/ItCriticalWorkerMonitoringTest.java | 3 +--
11 files changed, 41 insertions(+), 35 deletions(-)
diff --git
a/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/network/PartitionReplicationMessageGroup.java
b/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/network/PartitionReplicationMessageGroup.java
index 52e815f2a8..1399e74388 100644
---
a/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/network/PartitionReplicationMessageGroup.java
+++
b/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/network/PartitionReplicationMessageGroup.java
@@ -32,6 +32,7 @@ import
org.apache.ignite.internal.partition.replicator.network.disaster.LocalPar
import
org.apache.ignite.internal.partition.replicator.network.disaster.LocalPartitionStatesResponse;
import
org.apache.ignite.internal.partition.replicator.network.message.HasDataRequest;
import
org.apache.ignite.internal.partition.replicator.network.message.HasDataResponse;
+import
org.apache.ignite.internal.partition.replicator.network.raft.PartitionSnapshotMeta;
import
org.apache.ignite.internal.partition.replicator.network.raft.SnapshotMetaRequest;
import
org.apache.ignite.internal.partition.replicator.network.raft.SnapshotMetaResponse;
import
org.apache.ignite.internal.partition.replicator.network.raft.SnapshotMvDataRequest;
@@ -198,6 +199,11 @@ public interface PartitionReplicationMessageGroup {
*/
short UPDATE_MINIMUM_ACTIVE_TX_TIME_REPLICA_REQUEST = 26;
+ /**
+ * Message type for {@link PartitionSnapshotMeta}.
+ */
+ short PARTITION_SNAPSHOT_META = 27;
+
/**
* Message types for partition replicator module RAFT commands.
*
diff --git
a/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/network/raft/SnapshotMetaResponse.java
b/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/network/raft/PartitionSnapshotMeta.java
similarity index 65%
copy from
modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/network/raft/SnapshotMetaResponse.java
copy to
modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/network/raft/PartitionSnapshotMeta.java
index 8b3ef74716..8d0258b767 100644
---
a/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/network/raft/SnapshotMetaResponse.java
+++
b/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/network/raft/PartitionSnapshotMeta.java
@@ -17,14 +17,19 @@
package org.apache.ignite.internal.partition.replicator.network.raft;
-import org.apache.ignite.internal.network.NetworkMessage;
+import java.util.Map;
+import java.util.UUID;
import org.apache.ignite.internal.network.annotations.Transferable;
import
org.apache.ignite.internal.partition.replicator.network.PartitionReplicationMessageGroup;
import org.apache.ignite.raft.jraft.entity.RaftOutter.SnapshotMeta;
+import org.jetbrains.annotations.Nullable;
-/** Snapshot meta response message. */
-@Transferable(PartitionReplicationMessageGroup.SNAPSHOT_META_RESPONSE)
-public interface SnapshotMetaResponse extends NetworkMessage {
- /** Snapshot meta. */
- SnapshotMeta meta();
+/** Partition Raft snapshot meta. */
+@Transferable(PartitionReplicationMessageGroup.PARTITION_SNAPSHOT_META)
+public interface PartitionSnapshotMeta extends SnapshotMeta {
+ /** Minimum catalog version that is required for the snapshot to be
accepted by a follower. */
+ int requiredCatalogVersion();
+
+ /** Row ID for which the index needs to be built per building index ID at
the time the snapshot meta was created. */
+ @Nullable Map<Integer, UUID> nextRowIdToBuildByIndexId();
}
diff --git
a/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/network/raft/SnapshotMetaResponse.java
b/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/network/raft/SnapshotMetaResponse.java
index 8b3ef74716..9579b6b348 100644
---
a/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/network/raft/SnapshotMetaResponse.java
+++
b/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/network/raft/SnapshotMetaResponse.java
@@ -20,11 +20,10 @@ package
org.apache.ignite.internal.partition.replicator.network.raft;
import org.apache.ignite.internal.network.NetworkMessage;
import org.apache.ignite.internal.network.annotations.Transferable;
import
org.apache.ignite.internal.partition.replicator.network.PartitionReplicationMessageGroup;
-import org.apache.ignite.raft.jraft.entity.RaftOutter.SnapshotMeta;
/** Snapshot meta response message. */
@Transferable(PartitionReplicationMessageGroup.SNAPSHOT_META_RESPONSE)
public interface SnapshotMetaResponse extends NetworkMessage {
/** Snapshot meta. */
- SnapshotMeta meta();
+ PartitionSnapshotMeta meta();
}
diff --git
a/modules/raft/src/main/java/org/apache/ignite/raft/jraft/entity/RaftOutter.java
b/modules/raft/src/main/java/org/apache/ignite/raft/jraft/entity/RaftOutter.java
index 5d22c2697b..e0348a0247 100644
---
a/modules/raft/src/main/java/org/apache/ignite/raft/jraft/entity/RaftOutter.java
+++
b/modules/raft/src/main/java/org/apache/ignite/raft/jraft/entity/RaftOutter.java
@@ -64,11 +64,5 @@ public final class RaftOutter {
@Nullable Collection<String> learnersList();
@Nullable Collection<String> oldLearnersList();
-
- /** Minimum catalog version that is required for the snapshot to be
accepted by a follower. */
- int requiredCatalogVersion();
-
- /** Returns the row ID for which the index needs to be built per
building index ID at the time the snapshot meta was created. */
- @Nullable Map<Integer, UUID> nextRowIdToBuildByIndexId();
}
}
diff --git
a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/raft/snapshot/incoming/IncomingSnapshotCopier.java
b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/raft/snapshot/incoming/IncomingSnapshotCopier.java
index 8810e69120..a8d3d99084 100644
---
a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/raft/snapshot/incoming/IncomingSnapshotCopier.java
+++
b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/raft/snapshot/incoming/IncomingSnapshotCopier.java
@@ -47,6 +47,7 @@ import org.apache.ignite.internal.logger.Loggers;
import org.apache.ignite.internal.lowwatermark.message.GetLowWatermarkResponse;
import
org.apache.ignite.internal.lowwatermark.message.LowWatermarkMessagesFactory;
import
org.apache.ignite.internal.partition.replicator.network.PartitionReplicationMessagesFactory;
+import
org.apache.ignite.internal.partition.replicator.network.raft.PartitionSnapshotMeta;
import
org.apache.ignite.internal.partition.replicator.network.raft.SnapshotMetaRequest;
import
org.apache.ignite.internal.partition.replicator.network.raft.SnapshotMetaResponse;
import
org.apache.ignite.internal.partition.replicator.network.raft.SnapshotMvDataResponse;
@@ -105,7 +106,7 @@ public class IncomingSnapshotCopier extends SnapshotCopier {
* @see SnapshotMetaRequest
*/
@Nullable
- private volatile SnapshotMeta snapshotMeta;
+ private volatile PartitionSnapshotMeta snapshotMeta;
@Nullable
private volatile CompletableFuture<Boolean> metadataSufficiencyFuture;
@@ -302,7 +303,7 @@ public class IncomingSnapshotCopier extends SnapshotCopier {
}
private boolean metadataIsSufficientlyComplete() {
- SnapshotMeta meta = snapshotMeta;
+ PartitionSnapshotMeta meta = snapshotMeta;
assert meta != null;
return isMetadataAvailableFor(meta.requiredCatalogVersion(),
partitionSnapshotStorage.catalogService());
diff --git
a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/raft/snapshot/incoming/IncomingSnapshotReader.java
b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/raft/snapshot/incoming/IncomingSnapshotReader.java
index e53d21fdca..06a5820904 100644
---
a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/raft/snapshot/incoming/IncomingSnapshotReader.java
+++
b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/raft/snapshot/incoming/IncomingSnapshotReader.java
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.table.distributed.raft.snapshot.incoming;
import java.util.Set;
+import
org.apache.ignite.internal.partition.replicator.network.raft.PartitionSnapshotMeta;
import org.apache.ignite.raft.jraft.entity.RaftOutter.SnapshotMeta;
import org.apache.ignite.raft.jraft.rpc.Message;
import org.apache.ignite.raft.jraft.storage.snapshot.SnapshotReader;
@@ -27,14 +28,14 @@ import
org.apache.ignite.raft.jraft.storage.snapshot.SnapshotReader;
*/
class IncomingSnapshotReader extends SnapshotReader {
/** Snapshot meta. */
- private final SnapshotMeta snapshotMeta;
+ private final PartitionSnapshotMeta snapshotMeta;
/**
* Constructor.
*
* @param snapshotMeta Snapshot meta.
*/
- IncomingSnapshotReader(SnapshotMeta snapshotMeta) {
+ IncomingSnapshotReader(PartitionSnapshotMeta snapshotMeta) {
this.snapshotMeta = snapshotMeta;
}
diff --git
a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/raft/snapshot/outgoing/OutgoingSnapshot.java
b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/raft/snapshot/outgoing/OutgoingSnapshot.java
index 7ae8dd43c9..6b5858d01b 100644
---
a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/raft/snapshot/outgoing/OutgoingSnapshot.java
+++
b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/raft/snapshot/outgoing/OutgoingSnapshot.java
@@ -34,6 +34,7 @@ import org.apache.ignite.internal.lang.IgniteBiTuple;
import org.apache.ignite.internal.logger.IgniteLogger;
import org.apache.ignite.internal.logger.Loggers;
import
org.apache.ignite.internal.partition.replicator.network.PartitionReplicationMessagesFactory;
+import
org.apache.ignite.internal.partition.replicator.network.raft.PartitionSnapshotMeta;
import
org.apache.ignite.internal.partition.replicator.network.raft.SnapshotMetaRequest;
import
org.apache.ignite.internal.partition.replicator.network.raft.SnapshotMetaResponse;
import
org.apache.ignite.internal.partition.replicator.network.raft.SnapshotMvDataRequest;
@@ -53,7 +54,6 @@ import org.apache.ignite.internal.tx.TxMeta;
import org.apache.ignite.internal.tx.message.TxMessagesFactory;
import org.apache.ignite.internal.tx.message.TxMetaMessage;
import org.apache.ignite.internal.util.Cursor;
-import org.apache.ignite.raft.jraft.entity.RaftOutter.SnapshotMeta;
import org.apache.ignite.raft.jraft.util.concurrent.ConcurrentHashSet;
import org.jetbrains.annotations.Nullable;
@@ -86,7 +86,7 @@ public class OutgoingSnapshot {
/** Snapshot metadata that is taken at the moment when snapshot scope is
frozen. {@code null} till the freeze happens. */
@Nullable
- private volatile SnapshotMeta frozenMeta;
+ private volatile PartitionSnapshotMeta frozenMeta;
/**
* {@link RowId}s for which the corresponding rows were sent out of order
(relative to the order in which this
@@ -167,7 +167,7 @@ public class OutgoingSnapshot {
}
}
- private SnapshotMeta takeSnapshotMeta() {
+ private PartitionSnapshotMeta takeSnapshotMeta() {
long lastAppliedIndex = partition.maxLastAppliedIndex();
long lastAppliedTerm = partition.maxLastAppliedTerm();
@@ -187,8 +187,8 @@ public class OutgoingSnapshot {
*
* @return This snapshot metadata.
*/
- public SnapshotMeta meta() {
- SnapshotMeta meta = frozenMeta;
+ public PartitionSnapshotMeta meta() {
+ PartitionSnapshotMeta meta = frozenMeta;
assert meta != null : "No snapshot meta yet, probably the snapshot
scope was not yet frozen";
@@ -208,7 +208,7 @@ public class OutgoingSnapshot {
return logThatAlreadyClosedAndReturnNull();
}
- SnapshotMeta meta = frozenMeta;
+ PartitionSnapshotMeta meta = frozenMeta;
assert meta != null : "No snapshot meta yet, probably the snapshot
scope was not yet frozen";
diff --git
a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/raft/snapshot/outgoing/SnapshotMetaUtils.java
b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/raft/snapshot/outgoing/SnapshotMetaUtils.java
index 1b1722aa3e..bbd2db8ef1 100644
---
a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/raft/snapshot/outgoing/SnapshotMetaUtils.java
+++
b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/raft/snapshot/outgoing/SnapshotMetaUtils.java
@@ -24,12 +24,13 @@ import java.util.Map;
import java.util.UUID;
import org.apache.ignite.internal.catalog.CatalogService;
import org.apache.ignite.internal.catalog.descriptors.CatalogIndexDescriptor;
+import
org.apache.ignite.internal.partition.replicator.network.PartitionReplicationMessagesFactory;
+import
org.apache.ignite.internal.partition.replicator.network.raft.PartitionSnapshotMeta;
+import
org.apache.ignite.internal.partition.replicator.network.raft.PartitionSnapshotMetaBuilder;
import org.apache.ignite.internal.raft.RaftGroupConfiguration;
import org.apache.ignite.internal.storage.RowId;
import
org.apache.ignite.internal.table.distributed.raft.snapshot.PartitionAccess;
-import org.apache.ignite.raft.jraft.RaftMessagesFactory;
import org.apache.ignite.raft.jraft.entity.RaftOutter.SnapshotMeta;
-import org.apache.ignite.raft.jraft.entity.SnapshotMetaBuilder;
/**
* Utils to build {@link SnapshotMeta} instances.
@@ -46,14 +47,14 @@ public class SnapshotMetaUtils {
* created.
* @return SnapshotMeta corresponding to the given log index.
*/
- public static SnapshotMeta snapshotMetaAt(
+ public static PartitionSnapshotMeta snapshotMetaAt(
long logIndex,
long term,
RaftGroupConfiguration config,
int requiredCatalogVersion,
Map<Integer, UUID> nextRowIdToBuildByIndexId
) {
- SnapshotMetaBuilder metaBuilder = new
RaftMessagesFactory().snapshotMeta()
+ PartitionSnapshotMetaBuilder metaBuilder = new
PartitionReplicationMessagesFactory().partitionSnapshotMeta()
.lastIncludedIndex(logIndex)
.lastIncludedTerm(term)
.peersList(config.peers())
diff --git
a/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/raft/snapshot/incoming/IncomingSnapshotReaderTest.java
b/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/raft/snapshot/incoming/IncomingSnapshotReaderTest.java
index d2ac482370..04a89f0ee9 100644
---
a/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/raft/snapshot/incoming/IncomingSnapshotReaderTest.java
+++
b/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/raft/snapshot/incoming/IncomingSnapshotReaderTest.java
@@ -21,14 +21,14 @@ import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.mockito.Mockito.mock;
+import
org.apache.ignite.internal.partition.replicator.network.raft.PartitionSnapshotMeta;
import org.apache.ignite.internal.testframework.BaseIgniteAbstractTest;
-import org.apache.ignite.raft.jraft.entity.RaftOutter.SnapshotMeta;
import org.junit.jupiter.api.Test;
class IncomingSnapshotReaderTest extends BaseIgniteAbstractTest {
@Test
void returnsEmptyPath() {
- try (var reader = new
IncomingSnapshotReader(mock(SnapshotMeta.class))) {
+ try (var reader = new
IncomingSnapshotReader(mock(PartitionSnapshotMeta.class))) {
assertThat(reader.getPath(), is(""));
}
}
diff --git
a/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/raft/snapshot/outgoing/SnapshotMetaUtilsTest.java
b/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/raft/snapshot/outgoing/SnapshotMetaUtilsTest.java
index 3e5889dc48..97fc4f01ec 100644
---
a/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/raft/snapshot/outgoing/SnapshotMetaUtilsTest.java
+++
b/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/raft/snapshot/outgoing/SnapshotMetaUtilsTest.java
@@ -45,12 +45,12 @@ import org.apache.ignite.internal.catalog.CatalogManager;
import org.apache.ignite.internal.hlc.HybridClock;
import org.apache.ignite.internal.hlc.HybridClockImpl;
import org.apache.ignite.internal.manager.ComponentContext;
+import
org.apache.ignite.internal.partition.replicator.network.raft.PartitionSnapshotMeta;
import org.apache.ignite.internal.raft.RaftGroupConfiguration;
import org.apache.ignite.internal.storage.RowId;
import
org.apache.ignite.internal.table.distributed.raft.snapshot.PartitionAccess;
import org.apache.ignite.internal.table.distributed.raft.snapshot.PartitionKey;
import org.apache.ignite.internal.testframework.BaseIgniteAbstractTest;
-import org.apache.ignite.raft.jraft.entity.RaftOutter.SnapshotMeta;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.junit.jupiter.MockitoExtension;
@@ -67,7 +67,7 @@ class SnapshotMetaUtilsTest extends BaseIgniteAbstractTest {
UUID nextRowIdToBuild = UUID.randomUUID();
int indexId = 1;
- SnapshotMeta meta = snapshotMetaAt(100, 3, config, 42, Map.of(indexId,
nextRowIdToBuild));
+ PartitionSnapshotMeta meta = snapshotMetaAt(100, 3, config, 42,
Map.of(indexId, nextRowIdToBuild));
assertThat(meta.lastIncludedIndex(), is(100L));
assertThat(meta.lastIncludedTerm(), is(3L));
@@ -81,7 +81,7 @@ class SnapshotMetaUtilsTest extends BaseIgniteAbstractTest {
@Test
void doesNotIncludeOldConfigWhenItIsNotThere() {
- SnapshotMeta meta = snapshotMetaAt(100, 3, new
RaftGroupConfiguration(List.of(), List.of(), null, null), 42, Map.of());
+ PartitionSnapshotMeta meta = snapshotMetaAt(100, 3, new
RaftGroupConfiguration(List.of(), List.of(), null, null), 42, Map.of());
assertThat(meta.oldPeersList(), is(nullValue()));
assertThat(meta.oldLearnersList(), is(nullValue()));
diff --git
a/modules/workers/src/integrationTest/java/org/apache/ignite/internal/worker/ItCriticalWorkerMonitoringTest.java
b/modules/workers/src/integrationTest/java/org/apache/ignite/internal/worker/ItCriticalWorkerMonitoringTest.java
index 30a1fd987a..d52a85ddc7 100644
---
a/modules/workers/src/integrationTest/java/org/apache/ignite/internal/worker/ItCriticalWorkerMonitoringTest.java
+++
b/modules/workers/src/integrationTest/java/org/apache/ignite/internal/worker/ItCriticalWorkerMonitoringTest.java
@@ -30,7 +30,6 @@ import
org.apache.ignite.internal.partition.replicator.network.PartitionReplicat
import
org.apache.ignite.internal.partition.replicator.network.PartitionReplicationMessagesFactory;
import
org.apache.ignite.internal.partition.replicator.network.raft.SnapshotMetaResponse;
import org.apache.ignite.internal.testframework.log4j2.LogInspector;
-import org.apache.ignite.raft.jraft.RaftMessagesFactory;
import org.apache.logging.log4j.core.LogEvent;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
@@ -121,7 +120,7 @@ class ItCriticalWorkerMonitoringTest extends
ClusterPerTestIntegrationTest {
private static SnapshotMetaResponse snapshotMetaResponse() {
return new PartitionReplicationMessagesFactory().snapshotMetaResponse()
- .meta(new RaftMessagesFactory().snapshotMeta().build())
+ .meta(new
PartitionReplicationMessagesFactory().partitionSnapshotMeta().build())
.build();
}
}