[ 
https://issues.apache.org/jira/browse/IGNITE-17976?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mirza Aliev updated IGNITE-17976:
---------------------------------
    Description: 
*Scenario*:
Start two nodes, populate data, stop node, try to {{table.keyValueView().get}} 
value. 

*Expected behaviour*: 
Exception is thrown. We should throw TransactionException with error code, that 
we don't have an actor, who can handle that request. Also we need to add a root 
cause to the exception whether it was lost majority, or the reason is the 
replica unavailability etc. 

*Actual behaviour*: 
We can caught {{ReplicationTimeoutException}}, {{TransactionException}}, 
{{IgniteException}}. Sometimes we fail with {{NullPointerException}}, the 
reason is because we can stop leader of some partition, and for two nodes it is 
impossible to elect new leader, so we get null in {{InternalTableImpl#enlist}} 
when we try to get {{svc.refreshAndGetLeaderWithTerm();}}

The problem can be reproduced in the test 
{{ItIgniteNodeRestartTest#testOneNodeRestartWithGap}}, which was muted using 
this ticket.



  was:
*Scenario*:
Start two nodes, populate data, stop node, try to {{table.keyValueView().get}} 
value. 

*Expected behaviour*: 
Exception is thrown. We should throw TransactionException with error code, that 
we don't have an actor, who can handle that request. Also we need to add root 
cause to the exception whether it was lost majority, or the reason is the 
replica unavailability etc. 

*Actual behaviour*: 
We can caught {{ReplicationTimeoutException}}, {{TransactionException}}, 
{{IgniteException}}. Sometimes we fail with {{NullPointerException}}, the 
reason is because we can stop leader of some partition, and for two nodes it is 
impossible to elect new leader, so we get null in {{InternalTableImpl#enlist}} 
when we try to get {{svc.refreshAndGetLeaderWithTerm();}}

The problem can be reproduced in the test 
{{ItIgniteNodeRestartTest#testOneNodeRestartWithGap}}, which was muted using 
this ticket.




> Throw correct exception on KeyValueView#get in case of lost majority
> --------------------------------------------------------------------
>
>                 Key: IGNITE-17976
>                 URL: https://issues.apache.org/jira/browse/IGNITE-17976
>             Project: Ignite
>          Issue Type: Task
>            Reporter: Mirza Aliev
>            Priority: Major
>              Labels: ignite-3
>
> *Scenario*:
> Start two nodes, populate data, stop node, try to 
> {{table.keyValueView().get}} value. 
> *Expected behaviour*: 
> Exception is thrown. We should throw TransactionException with error code, 
> that we don't have an actor, who can handle that request. Also we need to add 
> a root cause to the exception whether it was lost majority, or the reason is 
> the replica unavailability etc. 
> *Actual behaviour*: 
> We can caught {{ReplicationTimeoutException}}, {{TransactionException}}, 
> {{IgniteException}}. Sometimes we fail with {{NullPointerException}}, the 
> reason is because we can stop leader of some partition, and for two nodes it 
> is impossible to elect new leader, so we get null in 
> {{InternalTableImpl#enlist}} when we try to get 
> {{svc.refreshAndGetLeaderWithTerm();}}
> The problem can be reproduced in the test 
> {{ItIgniteNodeRestartTest#testOneNodeRestartWithGap}}, which was muted using 
> this ticket.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to