[
https://issues.apache.org/jira/browse/IGNITE-21565?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Alexander Lapin updated IGNITE-21565:
-------------------------------------
Description:
{code:java}
java.lang.AssertionError: java.util.concurrent.ExecutionException:
java.util.concurrent.TimeoutException 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:67) at
org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:10) at
org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:6) at
org.apache.ignite.distributed.ReplicasSafeTimePropagationTest.sendSafeTimeSyncCommand(ReplicasSafeTimePropagationTest.java:231)
{code}
[https://ci.ignite.apache.org/buildConfiguration/ApacheIgnite3xGradle_Test_IntegrationTests_ModuleTable/7867487?expandBuildDeploymentsSection=false&hideProblemsFromDependencies=false&hideTestsFromDependencies=false&expandBuildChangesSection=true&expandBuildTestsSection=true&expandBuildProblemsSection=true]
h3. Upd #1
SafeTimeReorderingException occurred because of the race between
maxObservableSafeTime update on leader election and SafeTimeSyncCommands
processing within onBeforeApply. In order to fix that
* I've added synchronous onBeforeLeaderStart callback that is now used to
update maxObservableSafeTime with clock.now() +CLOCK_SKEW insread of previously
used asynchronous onLeaderStart. By asynchronous here I mean asynchronous to
onBeforeApply.
* I've also added maxObservableSafeTime update to Long.MAX_VALUE on each
leader stop along with same initial value. MAX_LONG is greater than any
possible safeTime propagated with commands thus we will actually block any
SafeTimeSyncCommands processing (*{*}even within onBeforeApply{*}*) before
leader election that includes proper maxObservableSafeTime initialization.
was:
{code:java}
java.lang.AssertionError: java.util.concurrent.ExecutionException:
java.util.concurrent.TimeoutException 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:67) at
org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:10) at
org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:6) at
org.apache.ignite.distributed.ReplicasSafeTimePropagationTest.sendSafeTimeSyncCommand(ReplicasSafeTimePropagationTest.java:231)
{code}
[https://ci.ignite.apache.org/buildConfiguration/ApacheIgnite3xGradle_Test_IntegrationTests_ModuleTable/7867487?expandBuildDeploymentsSection=false&hideProblemsFromDependencies=false&hideTestsFromDependencies=false&expandBuildChangesSection=true&expandBuildTestsSection=true&expandBuildProblemsSection=true]
h3.
h3. Upd #1
SafeTimeReorderingException occurred because of the race between
maxObservableSafeTime update on leader election and SafeTimeSyncCommands
processing within onBeforeApply. In order to fix that
* I've added synchronous onBeforeLeaderStart callback that is now used to
update maxObservableSafeTime with clock.now() +CLOCK_SKEW insread of previously
used asynchronous onLeaderStart. By asynchronous here I mean asynchronous to
onBeforeApply.
* I've also added maxObservableSafeTime update to Long.MAX_VALUE on each
leader stop along with same initial value. MAX_LONG is greater than any
possible safeTime propagated with commands thus we will actually block any
SafeTimeSyncCommands processing (**even within onBeforeApply**) before leader
election that includes proper maxObservableSafeTime initialization.
> ReplicasSafeTimePropagationTest#testSafeTimeReorderingOnLeaderReElection is
> flaky
> ---------------------------------------------------------------------------------
>
> Key: IGNITE-21565
> URL: https://issues.apache.org/jira/browse/IGNITE-21565
> Project: Ignite
> Issue Type: Bug
> Reporter: Alexander Lapin
> Assignee: Alexander Lapin
> Priority: Major
> Labels: ignite-3
> Time Spent: 0.5h
> Remaining Estimate: 0h
>
> {code:java}
> java.lang.AssertionError: java.util.concurrent.ExecutionException:
> java.util.concurrent.TimeoutException 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:67) at
> org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:10) at
> org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:6) at
> org.apache.ignite.distributed.ReplicasSafeTimePropagationTest.sendSafeTimeSyncCommand(ReplicasSafeTimePropagationTest.java:231)
> {code}
> [https://ci.ignite.apache.org/buildConfiguration/ApacheIgnite3xGradle_Test_IntegrationTests_ModuleTable/7867487?expandBuildDeploymentsSection=false&hideProblemsFromDependencies=false&hideTestsFromDependencies=false&expandBuildChangesSection=true&expandBuildTestsSection=true&expandBuildProblemsSection=true]
> h3. Upd #1
> SafeTimeReorderingException occurred because of the race between
> maxObservableSafeTime update on leader election and SafeTimeSyncCommands
> processing within onBeforeApply. In order to fix that
> * I've added synchronous onBeforeLeaderStart callback that is now used to
> update maxObservableSafeTime with clock.now() +CLOCK_SKEW insread of
> previously used asynchronous onLeaderStart. By asynchronous here I mean
> asynchronous to onBeforeApply.
> * I've also added maxObservableSafeTime update to Long.MAX_VALUE on each
> leader stop along with same initial value. MAX_LONG is greater than any
> possible safeTime propagated with commands thus we will actually block any
> SafeTimeSyncCommands processing (*{*}even within onBeforeApply{*}*) before
> leader election that includes proper maxObservableSafeTime initialization.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)