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 dd5e635c4be IGNITE-26051 Ignore destroyed tables in write intent
switch command (#6362)
dd5e635c4be is described below
commit dd5e635c4be3a4c3baf47d8b3ad7f3b54b7d0d6b
Author: Roman Puchkovskiy <[email protected]>
AuthorDate: Mon Aug 4 20:48:47 2025 +0400
IGNITE-26051 Ignore destroyed tables in write intent switch command (#6362)
---
.../handlers/WriteIntentSwitchCommandHandler.java | 27 ++++++++++++++++------
.../partition/ItPartitionDestructionTest.java | 2 --
2 files changed, 20 insertions(+), 9 deletions(-)
diff --git
a/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/raft/handlers/WriteIntentSwitchCommandHandler.java
b/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/raft/handlers/WriteIntentSwitchCommandHandler.java
index db734240fd3..b9407770de0 100644
---
a/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/raft/handlers/WriteIntentSwitchCommandHandler.java
+++
b/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/raft/handlers/WriteIntentSwitchCommandHandler.java
@@ -19,6 +19,8 @@ package
org.apache.ignite.internal.partition.replicator.raft.handlers;
import java.util.function.IntFunction;
import org.apache.ignite.internal.hlc.HybridTimestamp;
+import org.apache.ignite.internal.logger.IgniteLogger;
+import org.apache.ignite.internal.logger.Loggers;
import
org.apache.ignite.internal.partition.replicator.network.command.WriteIntentSwitchCommand;
import
org.apache.ignite.internal.partition.replicator.network.command.WriteIntentSwitchCommandV2;
import org.apache.ignite.internal.partition.replicator.raft.CommandResult;
@@ -31,6 +33,8 @@ import org.jetbrains.annotations.Nullable;
* Handler for {@link WriteIntentSwitchCommand}s.
*/
public class WriteIntentSwitchCommandHandler extends
AbstractCommandHandler<WriteIntentSwitchCommand> {
+ private static final IgniteLogger LOG =
Loggers.forClass(WriteIntentSwitchCommandHandler.class);
+
private final IntFunction<RaftTableProcessor> tableProcessorByTableId;
private final RaftTxFinishMarker txFinishMarker;
@@ -55,7 +59,20 @@ public class WriteIntentSwitchCommandHandler extends
AbstractCommandHandler<Writ
boolean applied = false;
for (int tableId : ((WriteIntentSwitchCommandV2)
switchCommand).tableIds()) {
- CommandResult singleResult = raftTableProcessor(tableId)
+ RaftTableProcessor tableProcessor = raftTableProcessor(tableId);
+
+ if (tableProcessor == null) {
+ // This can only happen if the table in question has already
been dropped and destroyed. In such case, we simply
+ // don't need to do anything as the partition storage is
already destroyed.
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Table processor for table ID {} not found.
Command execution for the table will be ignored: {}",
+ tableId, switchCommand.toStringForLightLogging());
+ }
+
+ continue;
+ }
+
+ CommandResult singleResult = tableProcessor
.processCommand(switchCommand, commandIndex, commandTerm,
safeTimestamp);
applied = applied || singleResult.wasApplied();
@@ -64,11 +81,7 @@ public class WriteIntentSwitchCommandHandler extends
AbstractCommandHandler<Writ
return new CommandResult(null, applied);
}
- private RaftTableProcessor raftTableProcessor(int tableId) {
- RaftTableProcessor raftTableProcessor =
tableProcessorByTableId.apply(tableId);
-
- assert raftTableProcessor != null : "No RAFT table processor found by
table ID " + tableId;
-
- return raftTableProcessor;
+ private @Nullable RaftTableProcessor raftTableProcessor(int tableId) {
+ return tableProcessorByTableId.apply(tableId);
}
}
diff --git
a/modules/table/src/integrationTest/java/org/apache/ignite/internal/partition/ItPartitionDestructionTest.java
b/modules/table/src/integrationTest/java/org/apache/ignite/internal/partition/ItPartitionDestructionTest.java
index 9b311c1eb24..92f9f82d46f 100644
---
a/modules/table/src/integrationTest/java/org/apache/ignite/internal/partition/ItPartitionDestructionTest.java
+++
b/modules/table/src/integrationTest/java/org/apache/ignite/internal/partition/ItPartitionDestructionTest.java
@@ -230,8 +230,6 @@ class ItPartitionDestructionTest extends
ClusterPerTestIntegrationTest {
*/
@Test
@WithSystemProperty(key = IgniteSystemProperties.COLOCATION_FEATURE_FLAG,
value = "true")
- // TODO: enable after https://issues.apache.org/jira/browse/IGNITE-26051
is fixed.
- @Disabled("https://issues.apache.org/jira/browse/IGNITE-26051")
void partitionIsDestroyedOnTableDestructionOnNodeRecoveryWithColocation()
throws Exception {
testPartitionIsDestroyedOnTableDestructionOnNodeRecovery(true);
}