[
https://issues.apache.org/jira/browse/IGNITE-9303?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16728615#comment-16728615
]
Andrew Mashenkov edited comment on IGNITE-9303 at 12/25/18 8:21 AM:
--------------------------------------------------------------------
[~agoncharuk], [~ilantukh],
Guys, I've some failed mvcc tests that are muted with a link to this ticket.
After merge with latest master, I've found these tests are still failed with
same symptom "smth goes wrong with padeId.
Looking at the PR I've found PageIdUtils.tag() method usage was changed to
correct PageIdUtils.flag() for page type checks,
but seems, similar fix should be applies to AbstractFreeList (line:500)
{noformat}
else if (PageIdUtils.flag(pageId) != PageIdAllocator.FLAG_DATA){noformat}
with applying similar fix to this line makes mvcc test passed.
Is PR incomplete or I've missed smth?
was (Author: amashenkov):
[~agoncharuk], [~ilantukh],
Guys, I've some failed mvcc tests that are muted with a link to this ticket.
After merge with latest master, I've found these tests are still failed with
same symptom "smth goes wrong with padeId.
Looking at the PR I've found PageIdUtils.tag() method usage was changed to
correct PageIdUtils.flag() for page type checks,
but seems, similar fix should be applies to AbstractFreeList (line:500)
{noformat}
else if (PageIdUtils.flag(pageId) != PageIdAllocator.FLAG_DATA){noformat}
with applying similar fix to this line makes mvcc test passed.
Was PR incomplete or I've missed smth?
> 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)