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

Reply via email to