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