[
https://issues.apache.org/jira/browse/IGNITE-21000?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Alexander Lapin updated IGNITE-21000:
-------------------------------------
Description:
{code:java}
java.lang.AssertionError:
Expected: is <{foo=bar}>
but: was <{}>java.lang.AssertionError:Expected: is <{foo=bar}> but:
was <{}> at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20) at
org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:6) at
org.apache.ignite.internal.configuration.storage.ItDistributedConfigurationStorageTest.testRestartWithPds(ItDistributedConfigurationStorageTest.java:256)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method) {code}
[https://ci.ignite.apache.org/buildConfiguration/ApacheIgnite3xGradle_Test_RunAllTests/7665195?expandCode+Inspection=true&expandBuildProblemsSection=true&hideProblemsFromDependencies=false&expandBuildTestsSection=true&hideTestsFromDependencies=false]
The reason of the failure is possible read/write commands reordering on raft
node restart. GetCurrentRevisionCommand (extends ReadCommand) handling checks
whether raft index matches storage one and if it does - evaluates the read.
After IGNITE-20425 raft log application is done asynchronously, meaning that if
GetCurrentRevisionCommand will touch the leader after election but prior to log
replay it will see 0 both in raft and storage indexes instead of 1 and (0 or 1)
respectively. In order to fix this it's possible to add lastCommittedIndex
initialization:
{code:java}
public boolean resetPendingIndex(final long newPendingIndex) {
...
this.lastCommittedIndex = newPendingIndex - 1;
...
}{code}
Given solution was disccused previoulsy, see
[https://github.com/apache/ignite-3/pull/960/files#diff-f3783b069060b4e1616ce9675b7a120ebf9797b4439ff6bae43376af62df0200]
for more details.
was:
{code:java}
java.lang.AssertionError:
Expected: is <{foo=bar}>
but: was <{}>java.lang.AssertionError:Expected: is <{foo=bar}> but:
was <{}> at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20) at
org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:6) at
org.apache.ignite.internal.configuration.storage.ItDistributedConfigurationStorageTest.testRestartWithPds(ItDistributedConfigurationStorageTest.java:256)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method) {code}
[https://ci.ignite.apache.org/buildConfiguration/ApacheIgnite3xGradle_Test_RunAllTests/7665195?expandCode+Inspection=true&expandBuildProblemsSection=true&hideProblemsFromDependencies=false&expandBuildTestsSection=true&hideTestsFromDependencies=false]
The reason of the failure is possible read/write commands reordering on raft
node restart. GetCurrentRevisionCommand (extends ReadCommand) handling checks
whether raft index matches storage one and if it does - evaluates the read.
After IGNITE-20425 raft log application is done asynchronously, meaning that if
GetCurrentRevisionCommand will touch the leader after election but prior to log
replay it will see 0 both in raft and storage indexes instead of 1 and (0 or 1)
respectively. In order to fix this it's possible to add lastCommittedIndex
initialization:
{code:java}
public boolean resetPendingIndex(final long newPendingIndex) {
...
this.lastCommittedIndex = newPendingIndex - 1;
...
}{code}
Given solution was disccused previoulsy, see
[https://github.com/apache/ignite-3/pull/960/files#diff-f3783b069060b4e1616ce9675b7a120ebf9797b4439ff6bae43376af62df0200]
for more details.
> ItDistributedConfigurationStorageTest#testRestartWithPds may fail
> -----------------------------------------------------------------
>
> Key: IGNITE-21000
> URL: https://issues.apache.org/jira/browse/IGNITE-21000
> Project: Ignite
> Issue Type: Bug
> Reporter: Alexander Lapin
> Assignee: Alexander Lapin
> Priority: Major
> Labels: ignite-3
>
> {code:java}
> java.lang.AssertionError:
> Expected: is <{foo=bar}>
> but: was <{}>java.lang.AssertionError:Expected: is <{foo=bar}> but:
> was <{}> at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20) at
> org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:6) at
> org.apache.ignite.internal.configuration.storage.ItDistributedConfigurationStorageTest.testRestartWithPds(ItDistributedConfigurationStorageTest.java:256)
> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method) {code}
> [https://ci.ignite.apache.org/buildConfiguration/ApacheIgnite3xGradle_Test_RunAllTests/7665195?expandCode+Inspection=true&expandBuildProblemsSection=true&hideProblemsFromDependencies=false&expandBuildTestsSection=true&hideTestsFromDependencies=false]
>
> The reason of the failure is possible read/write commands reordering on raft
> node restart. GetCurrentRevisionCommand (extends ReadCommand) handling checks
> whether raft index matches storage one and if it does - evaluates the read.
> After IGNITE-20425 raft log application is done asynchronously, meaning that
> if GetCurrentRevisionCommand will touch the leader after election but prior
> to log replay it will see 0 both in raft and storage indexes instead of 1 and
> (0 or 1) respectively. In order to fix this it's possible to add
> lastCommittedIndex initialization:
> {code:java}
> public boolean resetPendingIndex(final long newPendingIndex) {
> ...
> this.lastCommittedIndex = newPendingIndex - 1;
> ...
> }{code}
> Given solution was disccused previoulsy, see
> [https://github.com/apache/ignite-3/pull/960/files#diff-f3783b069060b4e1616ce9675b7a120ebf9797b4439ff6bae43376af62df0200]
> for more details.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)