[infinispan-issues] [JBoss JIRA] (ISPN-2407) StateProviderImpl.getTransactionsForSegments can fail with an IllegalStateException

Mircea Markus (JIRA) jira-events at lists.jboss.org
Tue Oct 30 20:26:10 EDT 2012


     [ https://issues.jboss.org/browse/ISPN-2407?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mircea Markus updated ISPN-2407:
--------------------------------

    Fix Version/s: 5.2.0.CR1
                       (was: 5.2.0.Beta3)

    
> StateProviderImpl.getTransactionsForSegments can fail with an IllegalStateException
> -----------------------------------------------------------------------------------
>
>                 Key: ISPN-2407
>                 URL: https://issues.jboss.org/browse/ISPN-2407
>             Project: Infinispan
>          Issue Type: Bug
>          Components: State transfer
>    Affects Versions: 5.2.0.Beta2
>            Reporter: Dan Berindei
>            Assignee: Dan Berindei
>            Priority: Critical
>             Fix For: 5.2.0.CR1
>
>
> I have seen this in NoRpcOnReadonlyTransactionsTest:
> {noformat}
> 18:07:58,765 TRACE (OOB-2,ISPN,NodeE-8639:a) [StateProviderImpl] Transactions were requested by node NodeF-33213 with topology 3, greater than the local topology (1). Waiting for topology 3 to be installed locally.
> 18:07:58,765 TRACE (OOB-2,ISPN,NodeE-8639:) [InboundInvocationHandlerImpl] Exception executing command
> java.lang.IllegalArgumentException: Node NodeE-8639 is not a member
> 	at org.infinispan.distribution.ch.DefaultConsistentHash.getSegmentsForOwner(DefaultConsistentHash.java:97)
> 	at org.infinispan.statetransfer.StateProviderImpl.getTransactionsForSegments(StateProviderImpl.java:203)
> 	at org.infinispan.statetransfer.StateRequestCommand.perform(StateRequestCommand.java:88)
> {noformat}
> The problem is that {{StateProviderImpl.getSegmentsForOwner}} uses an older consistent hash "cached" in StateProviderImpl, but the topology id in StateTransferLockImpl has been already updated by {{StateConsumerImpl.onTopologyUpdate}}, so calling {{StateTransferLockImpl.waitForTopology}} doesn't do anything.
> The simplest solution would be to call {{StateProviderImpl.onTopologyUpdate}} before {{StateConsumerImpl.onTopologyUpdate}}, and it doesn't look like it would cause any problems.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the infinispan-issues mailing list