[ 
https://issues.apache.org/jira/browse/IGNITE-26819?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Roman Puchkovskiy updated IGNITE-26819:
---------------------------------------
    Description: 
Here is the scenario (when colocation is enabled):
 # A transaction writing to table T is committed
 # A command S to switch its write intents gets put to node A’s log, but it is 
not applied on A yet
 # Table T is dropped
 # Command S is tried to be executed on A
 # The following is written to the log

 
 
{noformat}
2025-10-21 13:26:13:636 +0000 
[INFO][%cac-dpd-cde-gg-aks-dev-0%partition-operations-6][WriteIntentSwitchProcessor]
 Failed to switch write intents for Tx 
[txId=0199eefd-45e2-00ef-399b-327000000001]. 2025-10-21 13:26:13:636 +0000 
[WARNING][%cac-dpd-cde-gg-aks-dev-0%partition-operations-6][TxCleanupRequestHandler]
 Second cleanup attempt failed (the transaction outcome is not affected) 
[txId=0199eefd-45e2-00ef-399b-327000000001] 
java.util.concurrent.CompletionException: 
org.apache.ignite.internal.partition.replicator.schemacompat.IncompatibleSchemaVersionException:
 IGN-TX-11 Table was dropped [tableId=1022] TraceId:9807e086 at 
java.base/java.util.concurrent.CompletableFuture.encodeThrowable(Unknown 
Source) at java.base/java.util.concurrent.CompletableFuture.uniRunNow(Unknown 
Source) at java.base/java.util.concurrent.CompletableFuture.uniRunStage(Unknown 
Source) at java.base/java.util.concurrent.CompletableFuture.thenRun(Unknown 
Source) at 
org.apache.ignite.internal.partition.replicator.TableAwareReplicaRequestPreProcessor.preProcessTableAwareRequest(TableAwareReplicaRequestPreProcessor.java:124)
 at 
org.apache.ignite.internal.partition.replicator.handlers.WriteIntentSwitchRequestHandler.invokeTableWriteIntentSwitchReplicaRequest(WriteIntentSwitchRequestHandler.java:162)
 at 
org.apache.ignite.internal.partition.replicator.handlers.WriteIntentSwitchRequestHandler.lambda$handle$0(WriteIntentSwitchRequestHandler.java:116)
 at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at 
java.base/java.util.Iterator.forEachRemaining(Unknown Source) at 
java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Unknown 
Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) 
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) 
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown 
Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) 
at java.base/java.util.stream.ReferencePipeline.collect(Unknown Source) at 
org.apache.ignite.internal.partition.replicator.handlers.WriteIntentSwitchRequestHandler.handle(WriteIntentSwitchRequestHandler.java:117)
 at 
org.apache.ignite.internal.partition.replicator.ZonePartitionReplicaListener.processRequest(ZonePartitionReplicaListener.java:225)
 at 
org.apache.ignite.internal.partition.replicator.ZonePartitionReplicaListener.lambda$invoke$0(ZonePartitionReplicaListener.java:201)
 at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(Unknown 
Source) at java.base/java.util.concurrent.CompletableFuture.thenCompose(Unknown 
Source) at 
org.apache.ignite.internal.partition.replicator.ZonePartitionReplicaListener.invoke(ZonePartitionReplicaListener.java:201)
 at 
org.apache.ignite.internal.replicator.ZonePartitionReplicaImpl.processRequest(ZonePartitionReplicaImpl.java:65)
 at 
org.apache.ignite.internal.replicator.ReplicaManager.handleReplicaRequest(ReplicaManager.java:391)
 at 
org.apache.ignite.internal.replicator.ReplicaManager.lambda$onReplicaMessageReceived$0(ReplicaManager.java:322)
 at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.base/java.lang.Thread.run(Unknown Source) Caused by: 
org.apache.ignite.internal.partition.replicator.schemacompat.IncompatibleSchemaVersionException:
 IGN-TX-11 Table was dropped [tableId=1022] TraceId:9807e086 at 
org.apache.ignite.internal.partition.replicator.schemacompat.IncompatibleSchemaVersionException.tableDropped(IncompatibleSchemaVersionException.java:68)
 at 
org.apache.ignite.internal.partition.replicator.schemacompat.SchemaCompatibilityValidator.failIfTableDoesNotExistAt(SchemaCompatibilityValidator.java:266)
 at 
org.apache.ignite.internal.partition.replicator.TableAwareReplicaRequestPreProcessor.lambda$preProcessTableAwareRequest$0(TableAwareReplicaRequestPreProcessor.java:108)
 ... 26 more{noformat}
 
 
This doesn't seem to break any functionality, but it clutters the logs.

Probably we should not verify schema compatibility for write intent switch 
requests.

  was:
Here is the scenario (when colocation is enabled):
 # A transaction writing to table T is committed
 # A command S to switch its write intents gets put to node A’s log, but it is 
not applied on A yet
 # Table T is dropped
 # Command S is tried to be executed on A
 # The following is written to the log

{noformat}
2025-10-21 13:26:13:636 +0000 
[INFO][%cac-dpd-cde-gg-aks-dev-0%partition-operations-6][WriteIntentSwitchProcessor]
 Failed to switch write intents for Tx 
[txId=0199eefd-45e2-00ef-399b-327000000001]. 2025-10-21 13:26:13:636 +0000 
[WARNING][%cac-dpd-cde-gg-aks-dev-0%partition-operations-6][TxCleanupRequestHandler]
 Second cleanup attempt failed (the transaction outcome is not affected) 
[txId=0199eefd-45e2-00ef-399b-327000000001] 
java.util.concurrent.CompletionException: 
org.apache.ignite.internal.partition.replicator.schemacompat.IncompatibleSchemaVersionException:
 IGN-TX-11 Table was dropped [tableId=1022] TraceId:9807e086 at 
java.base/java.util.concurrent.CompletableFuture.encodeThrowable(Unknown 
Source) at java.base/java.util.concurrent.CompletableFuture.uniRunNow(Unknown 
Source) at java.base/java.util.concurrent.CompletableFuture.uniRunStage(Unknown 
Source) at java.base/java.util.concurrent.CompletableFuture.thenRun(Unknown 
Source) at 
org.apache.ignite.internal.partition.replicator.TableAwareReplicaRequestPreProcessor.preProcessTableAwareRequest(TableAwareReplicaRequestPreProcessor.java:124)
 at 
org.apache.ignite.internal.partition.replicator.handlers.WriteIntentSwitchRequestHandler.invokeTableWriteIntentSwitchReplicaRequest(WriteIntentSwitchRequestHandler.java:162)
 at 
org.apache.ignite.internal.partition.replicator.handlers.WriteIntentSwitchRequestHandler.lambda$handle$0(WriteIntentSwitchRequestHandler.java:116)
 at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at 
java.base/java.util.Iterator.forEachRemaining(Unknown Source) at 
java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Unknown 
Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) 
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) 
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown 
Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) 
at java.base/java.util.stream.ReferencePipeline.collect(Unknown Source) at 
org.apache.ignite.internal.partition.replicator.handlers.WriteIntentSwitchRequestHandler.handle(WriteIntentSwitchRequestHandler.java:117)
 at 
org.apache.ignite.internal.partition.replicator.ZonePartitionReplicaListener.processRequest(ZonePartitionReplicaListener.java:225)
 at 
org.apache.ignite.internal.partition.replicator.ZonePartitionReplicaListener.lambda$invoke$0(ZonePartitionReplicaListener.java:201)
 at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(Unknown 
Source) at java.base/java.util.concurrent.CompletableFuture.thenCompose(Unknown 
Source) at 
org.apache.ignite.internal.partition.replicator.ZonePartitionReplicaListener.invoke(ZonePartitionReplicaListener.java:201)
 at 
org.apache.ignite.internal.replicator.ZonePartitionReplicaImpl.processRequest(ZonePartitionReplicaImpl.java:65)
 at 
org.apache.ignite.internal.replicator.ReplicaManager.handleReplicaRequest(ReplicaManager.java:391)
 at 
org.apache.ignite.internal.replicator.ReplicaManager.lambda$onReplicaMessageReceived$0(ReplicaManager.java:322)
 at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.base/java.lang.Thread.run(Unknown Source) Caused by: 
org.apache.ignite.internal.partition.replicator.schemacompat.IncompatibleSchemaVersionException:
 IGN-TX-11 Table was dropped [tableId=1022] TraceId:9807e086 at 
org.apache.ignite.internal.partition.replicator.schemacompat.IncompatibleSchemaVersionException.tableDropped(IncompatibleSchemaVersionException.java:68)
 at 
org.apache.ignite.internal.partition.replicator.schemacompat.SchemaCompatibilityValidator.failIfTableDoesNotExistAt(SchemaCompatibilityValidator.java:266)
 at 
org.apache.ignite.internal.partition.replicator.TableAwareReplicaRequestPreProcessor.lambda$preProcessTableAwareRequest$0(TableAwareReplicaRequestPreProcessor.java:108)
 ... 26 more{noformat}
 
This doesn't seem to break any functionality, but it clutters the logs.

Probably we should not verify schema compatibility for write intent switch 
requests.


> Write intent switch with enabled colocation fails after table drop
> ------------------------------------------------------------------
>
>                 Key: IGNITE-26819
>                 URL: https://issues.apache.org/jira/browse/IGNITE-26819
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Roman Puchkovskiy
>            Priority: Major
>              Labels: ignite-3
>
> Here is the scenario (when colocation is enabled):
>  # A transaction writing to table T is committed
>  # A command S to switch its write intents gets put to node A’s log, but it 
> is not applied on A yet
>  # Table T is dropped
>  # Command S is tried to be executed on A
>  # The following is written to the log
>  
>  
> {noformat}
> 2025-10-21 13:26:13:636 +0000 
> [INFO][%cac-dpd-cde-gg-aks-dev-0%partition-operations-6][WriteIntentSwitchProcessor]
>  Failed to switch write intents for Tx 
> [txId=0199eefd-45e2-00ef-399b-327000000001]. 2025-10-21 13:26:13:636 +0000 
> [WARNING][%cac-dpd-cde-gg-aks-dev-0%partition-operations-6][TxCleanupRequestHandler]
>  Second cleanup attempt failed (the transaction outcome is not affected) 
> [txId=0199eefd-45e2-00ef-399b-327000000001] 
> java.util.concurrent.CompletionException: 
> org.apache.ignite.internal.partition.replicator.schemacompat.IncompatibleSchemaVersionException:
>  IGN-TX-11 Table was dropped [tableId=1022] TraceId:9807e086 at 
> java.base/java.util.concurrent.CompletableFuture.encodeThrowable(Unknown 
> Source) at java.base/java.util.concurrent.CompletableFuture.uniRunNow(Unknown 
> Source) at 
> java.base/java.util.concurrent.CompletableFuture.uniRunStage(Unknown Source) 
> at java.base/java.util.concurrent.CompletableFuture.thenRun(Unknown Source) 
> at 
> org.apache.ignite.internal.partition.replicator.TableAwareReplicaRequestPreProcessor.preProcessTableAwareRequest(TableAwareReplicaRequestPreProcessor.java:124)
>  at 
> org.apache.ignite.internal.partition.replicator.handlers.WriteIntentSwitchRequestHandler.invokeTableWriteIntentSwitchReplicaRequest(WriteIntentSwitchRequestHandler.java:162)
>  at 
> org.apache.ignite.internal.partition.replicator.handlers.WriteIntentSwitchRequestHandler.lambda$handle$0(WriteIntentSwitchRequestHandler.java:116)
>  at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) 
> at java.base/java.util.Iterator.forEachRemaining(Unknown Source) at 
> java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Unknown 
> Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown 
> Source) at 
> java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) 
> at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown 
> Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown 
> Source) at java.base/java.util.stream.ReferencePipeline.collect(Unknown 
> Source) at 
> org.apache.ignite.internal.partition.replicator.handlers.WriteIntentSwitchRequestHandler.handle(WriteIntentSwitchRequestHandler.java:117)
>  at 
> org.apache.ignite.internal.partition.replicator.ZonePartitionReplicaListener.processRequest(ZonePartitionReplicaListener.java:225)
>  at 
> org.apache.ignite.internal.partition.replicator.ZonePartitionReplicaListener.lambda$invoke$0(ZonePartitionReplicaListener.java:201)
>  at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(Unknown 
> Source) at 
> java.base/java.util.concurrent.CompletableFuture.thenCompose(Unknown Source) 
> at 
> org.apache.ignite.internal.partition.replicator.ZonePartitionReplicaListener.invoke(ZonePartitionReplicaListener.java:201)
>  at 
> org.apache.ignite.internal.replicator.ZonePartitionReplicaImpl.processRequest(ZonePartitionReplicaImpl.java:65)
>  at 
> org.apache.ignite.internal.replicator.ReplicaManager.handleReplicaRequest(ReplicaManager.java:391)
>  at 
> org.apache.ignite.internal.replicator.ReplicaManager.lambda$onReplicaMessageReceived$0(ReplicaManager.java:322)
>  at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown 
> Source) at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
> at java.base/java.lang.Thread.run(Unknown Source) Caused by: 
> org.apache.ignite.internal.partition.replicator.schemacompat.IncompatibleSchemaVersionException:
>  IGN-TX-11 Table was dropped [tableId=1022] TraceId:9807e086 at 
> org.apache.ignite.internal.partition.replicator.schemacompat.IncompatibleSchemaVersionException.tableDropped(IncompatibleSchemaVersionException.java:68)
>  at 
> org.apache.ignite.internal.partition.replicator.schemacompat.SchemaCompatibilityValidator.failIfTableDoesNotExistAt(SchemaCompatibilityValidator.java:266)
>  at 
> org.apache.ignite.internal.partition.replicator.TableAwareReplicaRequestPreProcessor.lambda$preProcessTableAwareRequest$0(TableAwareReplicaRequestPreProcessor.java:108)
>  ... 26 more{noformat}
>  
>  
> This doesn't seem to break any functionality, but it clutters the logs.
> Probably we should not verify schema compatibility for write intent switch 
> requests.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to