[ 
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)

Reply via email to