This is an automated email from the ASF dual-hosted git repository. tkalkirill pushed a commit to branch ignite-26849 in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit dc873d39fcc0d465a5e54fce851d11cfeeaf1c0a Author: Kirill Tkalenko <[email protected]> AuthorDate: Mon Nov 24 16:57:24 2025 +0300 IGNITE-26849 wip --- .../ItZonePartitionRaftListenerRecoveryTest.java | 8 ++- .../PartitionReplicaLifecycleManager.java | 3 +- .../partition/replicator/ZoneResourcesManager.java | 11 ++++- .../replicator/raft/snapshot/LogStorageAccess.java | 23 +++++++++ .../raft/snapshot/LogStorageAccessImpl.java | 36 ++++++++++++++ .../raft/snapshot/PartitionSnapshotStorage.java | 17 +++++-- .../snapshot/incoming/IncomingSnapshotCopier.java | 11 +++++ .../PartitionReplicaLifecycleManagerTest.java | 57 +++++++++++----------- .../replicator/ZoneResourcesManagerTest.java | 5 +- .../PartitionSnapshotStorageFactoryTest.java | 3 +- .../snapshot/PartitionSnapshotStorageTest.java | 3 +- .../incoming/IncomingSnapshotCopierTest.java | 8 ++- .../outgoing/OutgoingSnapshotReaderTest.java | 4 +- .../internal/table/distributed/TableManager.java | 4 +- 14 files changed, 151 insertions(+), 42 deletions(-) diff --git a/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/raft/ItZonePartitionRaftListenerRecoveryTest.java b/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/raft/ItZonePartitionRaftListenerRecoveryTest.java index bdcb3605a2c..df3fc9078ea 100644 --- a/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/raft/ItZonePartitionRaftListenerRecoveryTest.java +++ b/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/raft/ItZonePartitionRaftListenerRecoveryTest.java @@ -79,6 +79,7 @@ import org.apache.ignite.internal.network.StaticNodeFinder; import org.apache.ignite.internal.partition.replicator.network.PartitionReplicationMessagesFactory; import org.apache.ignite.internal.partition.replicator.network.command.TimedBinaryRowMessage; import org.apache.ignite.internal.partition.replicator.network.command.UpdateCommand; +import org.apache.ignite.internal.partition.replicator.raft.snapshot.LogStorageAccessImpl; import org.apache.ignite.internal.partition.replicator.raft.snapshot.PartitionMvStorageAccess; import org.apache.ignite.internal.partition.replicator.raft.snapshot.PartitionSnapshotStorage; import org.apache.ignite.internal.partition.replicator.raft.snapshot.PartitionSnapshotStorageFactory; @@ -98,6 +99,7 @@ import org.apache.ignite.internal.raft.server.RaftGroupOptions; import org.apache.ignite.internal.raft.service.RaftGroupService; import org.apache.ignite.internal.raft.storage.LogStorageFactory; import org.apache.ignite.internal.raft.util.SharedLogStorageFactoryUtils; +import org.apache.ignite.internal.replicator.ReplicaManager; import org.apache.ignite.internal.replicator.ZonePartitionId; import org.apache.ignite.internal.replicator.message.ReplicaMessagesFactory; import org.apache.ignite.internal.schema.BinaryRowImpl; @@ -236,7 +238,8 @@ class ItZonePartitionRaftListenerRecoveryTest extends IgniteAbstractTest { @InjectConfiguration SystemLocalConfiguration systemLocalConfiguration, @InjectExecutorService ScheduledExecutorService scheduledExecutorService, @Mock Catalog catalog, - @Mock CatalogIndexDescriptor catalogIndexDescriptor + @Mock CatalogIndexDescriptor catalogIndexDescriptor, + @Mock ReplicaManager replicaManager ) { when(catalogService.activeCatalog(anyLong())).thenReturn(catalog); when(catalog.indexes(anyInt())).thenReturn(List.of(catalogIndexDescriptor)); @@ -311,7 +314,8 @@ class ItZonePartitionRaftListenerRecoveryTest extends IgniteAbstractTest { new PartitionTxStateAccessImpl(txStateStorage.getOrCreatePartitionStorage(PARTITION_ID.partitionId())), catalogService, failureProcessor, - executor + executor, + new LogStorageAccessImpl(replicaManager) ); } diff --git a/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/PartitionReplicaLifecycleManager.java b/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/PartitionReplicaLifecycleManager.java index b53c7d1a315..79d657b176d 100644 --- a/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/PartitionReplicaLifecycleManager.java +++ b/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/PartitionReplicaLifecycleManager.java @@ -332,7 +332,8 @@ public class PartitionReplicaLifecycleManager extends topologyService, catalogService, failureProcessor, - partitionOperationsExecutor + partitionOperationsExecutor, + replicaMgr ) ); } diff --git a/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/ZoneResourcesManager.java b/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/ZoneResourcesManager.java index e2298bba0e0..a4e314c7913 100644 --- a/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/ZoneResourcesManager.java +++ b/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/ZoneResourcesManager.java @@ -30,10 +30,12 @@ import org.apache.ignite.internal.failure.FailureProcessor; import org.apache.ignite.internal.hlc.HybridTimestamp; import org.apache.ignite.internal.network.TopologyService; import org.apache.ignite.internal.partition.replicator.raft.ZonePartitionRaftListener; +import org.apache.ignite.internal.partition.replicator.raft.snapshot.LogStorageAccessImpl; import org.apache.ignite.internal.partition.replicator.raft.snapshot.PartitionSnapshotStorage; import org.apache.ignite.internal.partition.replicator.raft.snapshot.PartitionTxStateAccessImpl; import org.apache.ignite.internal.partition.replicator.raft.snapshot.ZonePartitionKey; import org.apache.ignite.internal.partition.replicator.raft.snapshot.outgoing.OutgoingSnapshotsManager; +import org.apache.ignite.internal.replicator.ReplicaManager; import org.apache.ignite.internal.replicator.ZonePartitionId; import org.apache.ignite.internal.tx.TxManager; import org.apache.ignite.internal.tx.storage.state.ThreadAssertingTxStateStorage; @@ -66,6 +68,8 @@ public class ZoneResourcesManager implements ManuallyCloseable { private final Executor partitionOperationsExecutor; + private final ReplicaManager replicaManager; + /** Map from zone IDs to their resource holders. */ private final Map<Integer, ZoneResources> resourcesByZoneId = new ConcurrentHashMap<>(); @@ -78,7 +82,8 @@ public class ZoneResourcesManager implements ManuallyCloseable { TopologyService topologyService, CatalogService catalogService, FailureProcessor failureProcessor, - Executor partitionOperationsExecutor + Executor partitionOperationsExecutor, + ReplicaManager replicaManager ) { this.sharedTxStateStorage = sharedTxStateStorage; this.txManager = txManager; @@ -87,6 +92,7 @@ public class ZoneResourcesManager implements ManuallyCloseable { this.catalogService = catalogService; this.failureProcessor = failureProcessor; this.partitionOperationsExecutor = partitionOperationsExecutor; + this.replicaManager = replicaManager; } ZonePartitionResources allocateZonePartitionResources( @@ -121,7 +127,8 @@ public class ZoneResourcesManager implements ManuallyCloseable { new PartitionTxStateAccessImpl(txStatePartitionStorage), catalogService, failureProcessor, - partitionOperationsExecutor + partitionOperationsExecutor, + new LogStorageAccessImpl(replicaManager) ); var zonePartitionResources = new ZonePartitionResources( diff --git a/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/LogStorageAccess.java b/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/LogStorageAccess.java new file mode 100644 index 00000000000..1d05876a491 --- /dev/null +++ b/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/LogStorageAccess.java @@ -0,0 +1,23 @@ +/* + * 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.partition.replicator.raft.snapshot; + +/** No doc yet. */ +// TODO: IGNITE-26849 Добаить документацию и методы +public interface LogStorageAccess { +} diff --git a/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/LogStorageAccessImpl.java b/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/LogStorageAccessImpl.java new file mode 100644 index 00000000000..81307c3f74b --- /dev/null +++ b/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/LogStorageAccessImpl.java @@ -0,0 +1,36 @@ +/* + * 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.partition.replicator.raft.snapshot; + +import org.apache.ignite.internal.replicator.ReplicaManager; +import org.apache.ignite.internal.replicator.ReplicationGroupId; + +/** No doc yet. */ +// TODO: IGNITE-26849 Добаить документацию и методы +public class LogStorageAccessImpl implements LogStorageAccess { + private final ReplicaManager replicaManager; + + /** Constructor. */ + public LogStorageAccessImpl(ReplicaManager replicaManager) { + this.replicaManager = replicaManager; + } + + public void destroy(ReplicationGroupId replicationGroupId) throws Exception { + replicaManager.destroyReplicationProtocolStorages(replicationGroupId, false); + } +} diff --git a/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/PartitionSnapshotStorage.java b/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/PartitionSnapshotStorage.java index be57c369751..f1b390bacab 100644 --- a/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/PartitionSnapshotStorage.java +++ b/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/PartitionSnapshotStorage.java @@ -98,6 +98,8 @@ public class PartitionSnapshotStorage { private final long waitForMetadataCatchupMs; + private final LogStorageAccess logStorage; + /** Constructor. */ public PartitionSnapshotStorage( PartitionKey partitionKey, @@ -106,7 +108,8 @@ public class PartitionSnapshotStorage { PartitionTxStateAccess txState, CatalogService catalogService, FailureProcessor failureProcessor, - Executor incomingSnapshotsExecutor + Executor incomingSnapshotsExecutor, + LogStorageAccess logStorage ) { this( partitionKey, @@ -116,7 +119,8 @@ public class PartitionSnapshotStorage { catalogService, failureProcessor, incomingSnapshotsExecutor, - DEFAULT_WAIT_FOR_METADATA_CATCHUP_MS + DEFAULT_WAIT_FOR_METADATA_CATCHUP_MS, + logStorage ); } @@ -129,7 +133,8 @@ public class PartitionSnapshotStorage { CatalogService catalogService, FailureProcessor failureProcessor, Executor incomingSnapshotsExecutor, - long waitForMetadataCatchupMs + long waitForMetadataCatchupMs, + LogStorageAccess logStorage ) { this.partitionKey = partitionKey; this.topologyService = topologyService; @@ -139,6 +144,7 @@ public class PartitionSnapshotStorage { this.failureProcessor = failureProcessor; this.incomingSnapshotsExecutor = incomingSnapshotsExecutor; this.waitForMetadataCatchupMs = waitForMetadataCatchupMs; + this.logStorage = logStorage; } public PartitionKey partitionKey() { @@ -356,4 +362,9 @@ public class PartitionSnapshotStorage { .oldLearnersList(configuration.oldLearners()) .build(); } + + /** Returns the replication log storage. */ + public LogStorageAccess logStorage() { + return logStorage; + } } diff --git a/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/incoming/IncomingSnapshotCopier.java b/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/incoming/IncomingSnapshotCopier.java index 42f2e6326a0..f423452b75e 100644 --- a/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/incoming/IncomingSnapshotCopier.java +++ b/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/incoming/IncomingSnapshotCopier.java @@ -20,6 +20,7 @@ package org.apache.ignite.internal.partition.replicator.raft.snapshot.incoming; import static java.util.concurrent.CompletableFuture.allOf; import static java.util.concurrent.CompletableFuture.anyOf; import static java.util.concurrent.CompletableFuture.failedFuture; +import static java.util.concurrent.CompletableFuture.runAsync; import static java.util.stream.Collectors.toList; import static org.apache.ignite.internal.hlc.HybridTimestamp.hybridTimestamp; import static org.apache.ignite.internal.hlc.HybridTimestamp.nullableHybridTimestamp; @@ -60,11 +61,16 @@ import org.apache.ignite.internal.partition.replicator.network.raft.SnapshotTxDa import org.apache.ignite.internal.partition.replicator.network.replication.BinaryRowMessage; import org.apache.ignite.internal.partition.replicator.raft.PartitionSnapshotInfo; import org.apache.ignite.internal.partition.replicator.raft.PartitionSnapshotInfoSerializer; +import org.apache.ignite.internal.partition.replicator.raft.snapshot.LogStorageAccessImpl; +import org.apache.ignite.internal.partition.replicator.raft.snapshot.PartitionKey; import org.apache.ignite.internal.partition.replicator.raft.snapshot.PartitionMvStorageAccess; import org.apache.ignite.internal.partition.replicator.raft.snapshot.PartitionSnapshotStorage; import org.apache.ignite.internal.partition.replicator.raft.snapshot.SnapshotUri; +import org.apache.ignite.internal.partition.replicator.raft.snapshot.ZonePartitionKey; import org.apache.ignite.internal.raft.RaftGroupConfiguration; import org.apache.ignite.internal.raft.RaftGroupConfigurationSerializer; +import org.apache.ignite.internal.replicator.TablePartitionId; +import org.apache.ignite.internal.replicator.ZonePartitionId; import org.apache.ignite.internal.schema.BinaryRow; import org.apache.ignite.internal.storage.MvPartitionStorage; import org.apache.ignite.internal.storage.ReadResult; @@ -732,4 +738,9 @@ public class IncomingSnapshotCopier extends SnapshotCopier { this.partitionsByTableId = partitionsByTableId; } } + + // TODO: IGNITE-26849 Реализовать и по нормальному + private CompletableFuture<Void> destroyReplicationLogStorage(SnapshotContext snapshotContext) { + return nullCompletedFuture(); + } } diff --git a/modules/partition-replicator/src/test/java/org/apache/ignite/internal/partition/replicator/PartitionReplicaLifecycleManagerTest.java b/modules/partition-replicator/src/test/java/org/apache/ignite/internal/partition/replicator/PartitionReplicaLifecycleManagerTest.java index 9a6493d7e1c..489d1b56bc1 100644 --- a/modules/partition-replicator/src/test/java/org/apache/ignite/internal/partition/replicator/PartitionReplicaLifecycleManagerTest.java +++ b/modules/partition-replicator/src/test/java/org/apache/ignite/internal/partition/replicator/PartitionReplicaLifecycleManagerTest.java @@ -203,34 +203,6 @@ class PartitionReplicaLifecycleManagerTest extends BaseIgniteAbstractTest { new PendingComparableValuesTracker<>(0L) )); - zoneResourcesManager = spy(new ZoneResourcesManager( - sharedTxStateStorage, - txManager, - outgoingSnapshotsManager, - topologyService, - catalogService, - failureManager, - executorService - ) { - @Override - protected TxStateStorage createTxStateStorage(int zoneId, int partitionCount) { - TxStateStorage txStateStorage = new TxStateRocksDbStorage(zoneId, partitionCount, sharedTxStateStorage) { - @Override - protected TxStateRocksDbPartitionStorage createPartitionStorage(int partitionId) { - return txStatePartitionStorage; - } - }; - - if (ThreadAssertions.enabled()) { - txStateStorage = new ThreadAssertingTxStateStorage(txStateStorage); - } - - txStateStorage.start(); - - return txStateStorage; - } - }); - when(raftManager.startRaftGroupNode(any(), any(), any(), any(), any(RaftGroupOptions.class), any())) .thenReturn(topologyAwareRaftGroupService); @@ -265,6 +237,35 @@ class PartitionReplicaLifecycleManagerTest extends BaseIgniteAbstractTest { executorService )); + zoneResourcesManager = spy(new ZoneResourcesManager( + sharedTxStateStorage, + txManager, + outgoingSnapshotsManager, + topologyService, + catalogService, + failureManager, + executorService, + replicaManager + ) { + @Override + protected TxStateStorage createTxStateStorage(int zoneId, int partitionCount) { + TxStateStorage txStateStorage = new TxStateRocksDbStorage(zoneId, partitionCount, sharedTxStateStorage) { + @Override + protected TxStateRocksDbPartitionStorage createPartitionStorage(int partitionId) { + return txStatePartitionStorage; + } + }; + + if (ThreadAssertions.enabled()) { + txStateStorage = new ThreadAssertingTxStateStorage(txStateStorage); + } + + txStateStorage.start(); + + return txStateStorage; + } + }); + partitionReplicaLifecycleManager = new PartitionReplicaLifecycleManager( catalogManager, replicaManager, diff --git a/modules/partition-replicator/src/test/java/org/apache/ignite/internal/partition/replicator/ZoneResourcesManagerTest.java b/modules/partition-replicator/src/test/java/org/apache/ignite/internal/partition/replicator/ZoneResourcesManagerTest.java index 991dda265ef..6d2b0c50cf7 100644 --- a/modules/partition-replicator/src/test/java/org/apache/ignite/internal/partition/replicator/ZoneResourcesManagerTest.java +++ b/modules/partition-replicator/src/test/java/org/apache/ignite/internal/partition/replicator/ZoneResourcesManagerTest.java @@ -41,6 +41,7 @@ import org.apache.ignite.internal.manager.ComponentContext; import org.apache.ignite.internal.network.TopologyService; import org.apache.ignite.internal.partition.replicator.ZoneResourcesManager.ZonePartitionResources; import org.apache.ignite.internal.partition.replicator.raft.snapshot.outgoing.OutgoingSnapshotsManager; +import org.apache.ignite.internal.replicator.ReplicaManager; import org.apache.ignite.internal.replicator.ZonePartitionId; import org.apache.ignite.internal.testframework.ExecutorServiceExtension; import org.apache.ignite.internal.testframework.IgniteAbstractTest; @@ -72,6 +73,7 @@ class ZoneResourcesManagerTest extends IgniteAbstractTest { @Mock OutgoingSnapshotsManager outgoingSnapshotsManager, @Mock TopologyService topologyService, @Mock CatalogService catalogService, + @Mock ReplicaManager replicaManager, @InjectExecutorService ScheduledExecutorService scheduler, @InjectExecutorService ExecutorService executor ) { @@ -92,7 +94,8 @@ class ZoneResourcesManagerTest extends IgniteAbstractTest { topologyService, catalogService, mock(FailureProcessor.class), - executor + executor, + replicaManager ); storageIndexTracker = new PendingComparableValuesTracker<>(0L); diff --git a/modules/partition-replicator/src/test/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/PartitionSnapshotStorageFactoryTest.java b/modules/partition-replicator/src/test/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/PartitionSnapshotStorageFactoryTest.java index 4704cf829d1..6373adc63af 100644 --- a/modules/partition-replicator/src/test/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/PartitionSnapshotStorageFactoryTest.java +++ b/modules/partition-replicator/src/test/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/PartitionSnapshotStorageFactoryTest.java @@ -49,7 +49,8 @@ class PartitionSnapshotStorageFactoryTest extends BaseIgniteAbstractTest { mock(PartitionTxStateAccess.class), mock(CatalogService.class), mock(FailureProcessor.class), - mock(Executor.class) + mock(Executor.class), + mock(LogStorageAccess.class) ); @Mock diff --git a/modules/partition-replicator/src/test/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/PartitionSnapshotStorageTest.java b/modules/partition-replicator/src/test/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/PartitionSnapshotStorageTest.java index 59219e1648d..014b76f1375 100644 --- a/modules/partition-replicator/src/test/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/PartitionSnapshotStorageTest.java +++ b/modules/partition-replicator/src/test/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/PartitionSnapshotStorageTest.java @@ -59,7 +59,8 @@ public class PartitionSnapshotStorageTest extends BaseIgniteAbstractTest { mock(PartitionTxStateAccess.class), mock(CatalogService.class), mock(FailureProcessor.class), - mock(Executor.class) + mock(Executor.class), + mock(LogStorageAccess.class) ); @Test diff --git a/modules/partition-replicator/src/test/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/incoming/IncomingSnapshotCopierTest.java b/modules/partition-replicator/src/test/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/incoming/IncomingSnapshotCopierTest.java index fdd3083b688..27b32b04f38 100644 --- a/modules/partition-replicator/src/test/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/incoming/IncomingSnapshotCopierTest.java +++ b/modules/partition-replicator/src/test/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/incoming/IncomingSnapshotCopierTest.java @@ -86,6 +86,7 @@ import org.apache.ignite.internal.partition.replicator.network.raft.SnapshotTxDa import org.apache.ignite.internal.partition.replicator.network.replication.BinaryRowMessage; import org.apache.ignite.internal.partition.replicator.raft.PartitionSnapshotInfo; import org.apache.ignite.internal.partition.replicator.raft.PartitionSnapshotInfoSerializer; +import org.apache.ignite.internal.partition.replicator.raft.snapshot.LogStorageAccessImpl; import org.apache.ignite.internal.partition.replicator.raft.snapshot.PartitionSnapshotStorage; import org.apache.ignite.internal.partition.replicator.raft.snapshot.PartitionTxStateAccessImpl; import org.apache.ignite.internal.partition.replicator.raft.snapshot.SnapshotUri; @@ -93,6 +94,7 @@ import org.apache.ignite.internal.partition.replicator.raft.snapshot.ZonePartiti import org.apache.ignite.internal.partition.replicator.raft.snapshot.outgoing.OutgoingSnapshotsManager; import org.apache.ignite.internal.raft.RaftGroupConfiguration; import org.apache.ignite.internal.raft.RaftGroupConfigurationConverter; +import org.apache.ignite.internal.replicator.ReplicaManager; import org.apache.ignite.internal.replicator.TablePartitionId; import org.apache.ignite.internal.replicator.message.ReplicaMessagesFactory; import org.apache.ignite.internal.schema.BinaryRow; @@ -199,6 +201,8 @@ public class IncomingSnapshotCopierTest extends BaseIgniteAbstractTest { private final TestLowWatermark lowWatermark = spy(new TestLowWatermark()); + private final ReplicaManager replicaManager = mock(ReplicaManager.class); + @BeforeEach void setUp( @Mock Catalog catalog, @@ -396,7 +400,9 @@ public class IncomingSnapshotCopierTest extends BaseIgniteAbstractTest { catalogService, mock(FailureProcessor.class), executorService, - 0 + 0, + // TODO: IGNITE-26849 Добавить проверку что вызывается метод в каком-то тесте + new LogStorageAccessImpl(replicaManager) ); storage.addMvPartition(TABLE_ID, spy(new PartitionMvStorageAccessImpl( diff --git a/modules/partition-replicator/src/test/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/outgoing/OutgoingSnapshotReaderTest.java b/modules/partition-replicator/src/test/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/outgoing/OutgoingSnapshotReaderTest.java index 47af48813a7..b7283ad58e2 100644 --- a/modules/partition-replicator/src/test/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/outgoing/OutgoingSnapshotReaderTest.java +++ b/modules/partition-replicator/src/test/java/org/apache/ignite/internal/partition/replicator/raft/snapshot/outgoing/OutgoingSnapshotReaderTest.java @@ -32,6 +32,7 @@ import org.apache.ignite.internal.catalog.Catalog; import org.apache.ignite.internal.catalog.CatalogService; import org.apache.ignite.internal.failure.FailureProcessor; import org.apache.ignite.internal.network.TopologyService; +import org.apache.ignite.internal.partition.replicator.raft.snapshot.LogStorageAccess; import org.apache.ignite.internal.partition.replicator.raft.snapshot.PartitionMvStorageAccess; import org.apache.ignite.internal.partition.replicator.raft.snapshot.PartitionSnapshotStorage; import org.apache.ignite.internal.partition.replicator.raft.snapshot.PartitionTxStateAccess; @@ -84,7 +85,8 @@ public class OutgoingSnapshotReaderTest extends BaseIgniteAbstractTest { txStateAccess, catalogService, mock(FailureProcessor.class), - mock(Executor.class) + mock(Executor.class), + mock(LogStorageAccess.class) ); snapshotStorage.addMvPartition(TABLE_ID_1, partitionAccess1); diff --git a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java index 2df4c02721e..401b1e0ac0d 100644 --- a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java +++ b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java @@ -161,6 +161,7 @@ import org.apache.ignite.internal.partition.replicator.ReliableCatalogVersions; import org.apache.ignite.internal.partition.replicator.ReplicaTableProcessor; import org.apache.ignite.internal.partition.replicator.network.PartitionReplicationMessagesFactory; import org.apache.ignite.internal.partition.replicator.network.replication.ChangePeersAndLearnersAsyncReplicaRequest; +import org.apache.ignite.internal.partition.replicator.raft.snapshot.LogStorageAccessImpl; import org.apache.ignite.internal.partition.replicator.raft.snapshot.PartitionDataStorage; import org.apache.ignite.internal.partition.replicator.raft.snapshot.PartitionKey; import org.apache.ignite.internal.partition.replicator.raft.snapshot.PartitionSnapshotStorage; @@ -2682,7 +2683,8 @@ public class TableManager implements IgniteTablesInternal, IgniteComponent { txStateAccess, catalogService, failureProcessor, - incomingSnapshotsExecutor + incomingSnapshotsExecutor, + new LogStorageAccessImpl(replicaMgr) ); snapshotStorage.addMvPartition(internalTable.tableId(), partitionAccess);
