[ https://issues.apache.org/jira/browse/IGNITE-9303?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16728619#comment-16728619 ]
ASF GitHub Bot commented on IGNITE-9303: ---------------------------------------- GitHub user AMashenkov opened a pull request: https://github.com/apache/ignite/pull/5741 IGNITE-9303: Fix wrong page tag usage. You can merge this pull request into a Git repository by running: $ git pull https://github.com/gridgain/apache-ignite ignite-9303-minor Alternatively you can review and apply these changes as the patch at: https://github.com/apache/ignite/pull/5741.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #5741 ---- commit db978fa392229acc7db370b92f9086aee9a90b25 Author: Andrey V. Mashenkov <andrey.mashenkov@...> Date: 2018-12-25T08:33:09Z IGNITE-9303: Fix wrong page tag usage. ---- > PageSnapshot can contain wrong pageId tag when not dirty page is recycling > -------------------------------------------------------------------------- > > Key: IGNITE-9303 > URL: https://issues.apache.org/jira/browse/IGNITE-9303 > Project: Ignite > Issue Type: Bug > Affects Versions: 2.6 > Reporter: Aleksey Plekhanov > Assignee: Ilya Lantukh > Priority: Major > Fix For: 2.8 > > > When page is recycling (for example in {{BPlusTree.Remove#freePage()}} -> > {{DataStructure#recyclePage()}}) tag of {{pageId}} is modified, but original > {{pageId}} is passed to {{writeUnlock()}} method and this passed {{pageId}} > is stored to PageSnapshot WAL record. > This bug may lead to errors in WAL applying during crash recovery. > Reproducer (ignite-indexing module must be in classpath): > {code:java} > public class WalFailReproducer extends AbstractWalDeltaConsistencyTest { > @Override protected boolean checkPagesOnCheckpoint() { > return true; > } > public final void testPutRemoveCacheDestroy() throws Exception { > CacheConfiguration<Integer, Integer> ccfg = new > CacheConfiguration<>("cache0"); > ccfg.setIndexedTypes(Integer.class, Integer.class); > IgniteEx ignite = startGrid(0); > ignite.cluster().active(true); > IgniteCache<Integer, Integer> cache0 = ignite.getOrCreateCache(ccfg); > for (int i = 0; i < 5_000; i++) > cache0.put(i, i); > forceCheckpoint(); > for (int i = 1_000; i < 4_000; i++) > cache0.remove(i); > forceCheckpoint(); > stopAllGrids(); > } > } > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)