[
https://issues.apache.org/jira/browse/IGNITE-25654?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17965518#comment-17965518
]
Mikhail Efremov commented on IGNITE-25654:
------------------------------------------
The reason is equal timestamps for {{clocks#now}} that is the commit timestamp
in the test beginning and operation timestamp inside
{{SchemaCompatibilityValidator#failIfRequestSchemaDiffersFromTxTs}} that is
{{clock#current}}. This leads to throw the mocked exception case.
As solution we have to force push clock forward because we will invoke listener
directly bypassing ReplicaManager or MessageService, so clock won't be updated
if the test computes too fast for physical clock ticking and then we may have
equal clock#current and the given above commit timestamp.
> ZonePartitionReplicaListenerTest#writeIntentSwitchForCompactedCatalogTimestampWorks
> is flaky
> --------------------------------------------------------------------------------------------
>
> Key: IGNITE-25654
> URL: https://issues.apache.org/jira/browse/IGNITE-25654
> Project: Ignite
> Issue Type: Bug
> Reporter: Mikhail Efremov
> Assignee: Mikhail Efremov
> Priority: Major
> Labels: ignite-3
> Time Spent: 0.5h
> Remaining Estimate: 0h
>
> *Description*
> We have a failures of the test:
> https://ci.ignite.apache.org/buildConfiguration/ApacheIgnite3xGradle_Test_RunUnitTests/9210054
> Stacktrace:
> {code:java}
> java.lang.AssertionError: java.util.concurrent.ExecutionException:
> org.apache.ignite.internal.catalog.CatalogNotFoundException: IGN-CATALOG-1
> Oops TraceId:03876c30
> at
> org.apache.ignite.internal.testframework.matchers.CompletableFutureMatcher.matchesSafely(CompletableFutureMatcher.java:78)
> at
> org.apache.ignite.internal.testframework.matchers.CompletableFutureMatcher.matchesSafely(CompletableFutureMatcher.java:35)
> at org.hamcrest.TypeSafeMatcher.matches(TypeSafeMatcher.java:83)
> at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:10)
> at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:6)
> at
> org.apache.ignite.internal.table.distributed.replication.ZonePartitionReplicaListenerTest.writeIntentSwitchForCompactedCatalogTimestampWorks(ZonePartitionReplicaListenerTest.java:1481)
> at java.base/java.lang.reflect.Method.invoke(Method.java:568)
> at java.base/java.util.Optional.ifPresent(Optional.java:178)
> at
> java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
> at
> java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
> at
> java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
> at
> java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
> at
> java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
> at
> java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992)
> at
> java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
> at
> java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
> at
> java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
> at
> java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
> at
> java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
> at
> java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
> at
> java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
> at
> java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
> at
> java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
> at
> java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
> at
> java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
> at
> java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
> at
> java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
> at
> java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
> at
> java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
> at
> java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
> at
> java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
> at
> java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
> at
> java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
> at
> java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
> at
> java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
> at
> java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
> at
> java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
> at
> java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
> at
> java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
> at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
> at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
> Caused by: java.util.concurrent.ExecutionException:
> org.apache.ignite.internal.catalog.CatalogNotFoundException: IGN-CATALOG-1
> Oops TraceId:03876c30
> at
> java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396)
> at
> java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096)
> at
> org.apache.ignite.internal.testframework.matchers.CompletableFutureMatcher.matchesSafely(CompletableFutureMatcher.java:74)
> ... 40 more
> Caused by: org.apache.ignite.internal.catalog.CatalogNotFoundException:
> IGN-CATALOG-1 Oops TraceId:03876c30
> at
> app//org.apache.ignite.internal.partition.replicator.schemacompat.SchemaCompatibilityValidator.failIfTableDoesNotExistAt(SchemaCompatibilityValidator.java:269)
> at
> app//org.apache.ignite.internal.partition.replicator.TableAwareReplicaRequestPreProcessor.lambda$preProcessTableAwareRequest$0(TableAwareReplicaRequestPreProcessor.java:104)
> at
> [email protected]/java.util.concurrent.CompletableFuture.uniRunNow(CompletableFuture.java:819)
> at
> [email protected]/java.util.concurrent.CompletableFuture.uniRunStage(CompletableFuture.java:803)
> at
> [email protected]/java.util.concurrent.CompletableFuture.thenRun(CompletableFuture.java:2195)
> at
> app//org.apache.ignite.internal.partition.replicator.TableAwareReplicaRequestPreProcessor.preProcessTableAwareRequest(TableAwareReplicaRequestPreProcessor.java:119)
> at
> app//org.apache.ignite.internal.partition.replicator.handlers.WriteIntentSwitchRequestHandler.invokeTableWriteIntentSwitchReplicaRequest(WriteIntentSwitchRequestHandler.java:169)
> at
> app//org.apache.ignite.internal.partition.replicator.handlers.WriteIntentSwitchRequestHandler.lambda$handle$0(WriteIntentSwitchRequestHandler.java:123)
> at
> [email protected]/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
> at [email protected]/java.util.Iterator.forEachRemaining(Iterator.java:133)
> at
> [email protected]/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1845)
> at
> [email protected]/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
> at
> [email protected]/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
> at
> [email protected]/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
> at
> [email protected]/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
> at
> [email protected]/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
> at
> app//org.apache.ignite.internal.partition.replicator.handlers.WriteIntentSwitchRequestHandler.handle(WriteIntentSwitchRequestHandler.java:124)
> at
> app//org.apache.ignite.internal.partition.replicator.ZonePartitionReplicaListener.processRequest(ZonePartitionReplicaListener.java:230)
> at
> app//org.apache.ignite.internal.partition.replicator.ZonePartitionReplicaListener.lambda$invoke$0(ZonePartitionReplicaListener.java:206)
> at
> [email protected]/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187)
> at
> [email protected]/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309)
> at
> app//org.apache.ignite.internal.partition.replicator.ZonePartitionReplicaListener.invoke(ZonePartitionReplicaListener.java:206)
> at
> app//org.apache.ignite.internal.table.distributed.replication.ZonePartitionReplicaListenerTest.writeIntentSwitchForCompactedCatalogTimestampWorks(ZonePartitionReplicaListenerTest.java:1470)
> ... 35 more
> {code}
> *Motivation*
> Tests should be green.
> *Definition of done*
> Unit test should be fixed.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)