[
https://issues.apache.org/jira/browse/IGNITE-23238?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Alexander Lapin updated IGNITE-23238:
-------------------------------------
Description:
Test failed with
{code:java}
org.opentest4j.AssertionFailedError: expected: <Status[ECATCHUP<10003>: Peer
int_torel_5004 failed to catch up.]> but was: <Status[OK]> at
app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
at
app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
at
app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) at
app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) at
app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) at
app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1145) at
app//org.apache.ignite.raft.jraft.core.ItNodeTest.testOnReconfigurationErrorListener(ItNodeTest.java:3100)
{code}
I believe that it has happened because of double closure state update.
In case of async (and only async operations) we set the closure.state in
{code:java}
if (async) {
Utils.runClosureInThread(this.node.getOptions().getCommonExecutor(), done,
Status.OK());
} {code}
in NodeImpl.ConfigurationCtx#start
and later may change the state by calling
{code:java}
oldDoneClosure.run(status);{code}
in NodeImpl.ConfigurationCtx#onCaughtUp
Second closure state adjustment seems incorrect to me.
> ItNodeTest.testOnReconfigurationErrorListener failed
> ----------------------------------------------------
>
> Key: IGNITE-23238
> URL: https://issues.apache.org/jira/browse/IGNITE-23238
> Project: Ignite
> Issue Type: Bug
> Reporter: Alexander Lapin
> Priority: Major
> Labels: ignite-3
>
> Test failed with
>
> {code:java}
> org.opentest4j.AssertionFailedError: expected: <Status[ECATCHUP<10003>: Peer
> int_torel_5004 failed to catch up.]> but was: <Status[OK]> at
> app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
> at
> app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
> at
> app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
> at
> app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
> at
> app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
> at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1145)
> at
> app//org.apache.ignite.raft.jraft.core.ItNodeTest.testOnReconfigurationErrorListener(ItNodeTest.java:3100)
> {code}
> I believe that it has happened because of double closure state update.
>
> In case of async (and only async operations) we set the closure.state in
>
> {code:java}
> if (async) {
> Utils.runClosureInThread(this.node.getOptions().getCommonExecutor(),
> done, Status.OK());
> } {code}
> in NodeImpl.ConfigurationCtx#start
>
> and later may change the state by calling
> {code:java}
> oldDoneClosure.run(status);{code}
> in NodeImpl.ConfigurationCtx#onCaughtUp
> Second closure state adjustment seems incorrect to me.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)