You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Vladislav Pyatkov (Jira)" <ji...@apache.org> on 2021/06/30 11:59:00 UTC

[jira] [Updated] (IGNITE-15033) AssertionError: Unexpected rebalance on rebalanced cluster

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

Vladislav Pyatkov updated IGNITE-15033:
---------------------------------------
    Description: 
There is a low probably that partition state restored incorrectly when a cache is starting with data on disk.
The issue happened because cluster can save the partition meta page during it state is still restored.
The code is shown below (GridCacheOffheapManager.java):

{code:java}
@Override public Map<Integer, Long> restorePartitionStates {
  //Here the metapage was restored from disk, but it state is not recovery in GridDhtLocalPartition.
  part.dataStore().init();  
  ... // Here another thread will be able to execute saveStoreMetadata and set an incorrect state on the metapage.
  //State will be recovered only here.
  long pageAddr = pageMem.writeLock(grp.groupId(), partMetaId, partMetaPage);
  try {
    int stateId = io.getPartitionState(pageAddr);
    updateState(part, stateId);
  }
  finaly {
    pageMem.writeUnlock(grp.groupId(), partMetaId, partMetaPage, null, changed);
  }
}
{code}


  was:
It has low probably that partition state restored incorrectly when a cache is starting with data on disk.
The issue happened because cluster can save the partition meta page during it state is still restored.
The code is shown below (GridCacheOffheapManager.java):

{code:java}
@Override public Map<Integer, Long> restorePartitionStates {
  //Here the metapage was restored from disk, but it state is not recovery in GridDhtLocalPartition.
  part.dataStore().init();  
  ... // Here another thread will be able to execute saveStoreMetadata and set an incorrect state on the metapage.
  //State will be recovered only here.
  long pageAddr = pageMem.writeLock(grp.groupId(), partMetaId, partMetaPage);
  try {
    int stateId = io.getPartitionState(pageAddr);
    updateState(part, stateId);
  }
  finaly {
    pageMem.writeUnlock(grp.groupId(), partMetaId, partMetaPage, null, changed);
  }
}
{code}



> AssertionError: Unexpected rebalance on rebalanced cluster
> ----------------------------------------------------------
>
>                 Key: IGNITE-15033
>                 URL: https://issues.apache.org/jira/browse/IGNITE-15033
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Vladislav Pyatkov
>            Assignee: Vladislav Pyatkov
>            Priority: Major
>
> There is a low probably that partition state restored incorrectly when a cache is starting with data on disk.
> The issue happened because cluster can save the partition meta page during it state is still restored.
> The code is shown below (GridCacheOffheapManager.java):
> {code:java}
> @Override public Map<Integer, Long> restorePartitionStates {
>   //Here the metapage was restored from disk, but it state is not recovery in GridDhtLocalPartition.
>   part.dataStore().init();  
>   ... // Here another thread will be able to execute saveStoreMetadata and set an incorrect state on the metapage.
>   //State will be recovered only here.
>   long pageAddr = pageMem.writeLock(grp.groupId(), partMetaId, partMetaPage);
>   try {
>     int stateId = io.getPartitionState(pageAddr);
>     updateState(part, stateId);
>   }
>   finaly {
>     pageMem.writeUnlock(grp.groupId(), partMetaId, partMetaPage, null, changed);
>   }
> }
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)