[ https://issues.apache.org/jira/browse/IGNITE-11089?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ivan Rakov updated IGNITE-11089: -------------------------------- Description: We had faced numerous bugs when pages that were initially allocated in partition X migrated to partition Y (example: IGNITE-8659). Such migration may cause storage corruption: if partition Y gets evicted, attempt to dereference link to migrated page will cause error. We may prevent such situations in general and gain a few percent performance boost at the same time: 1) Locate all links to pages in delta records, including self-links (examples: InitNewPageRecord#newPageId, PagesListSetNextRecord#nextPageId, MergeRecord#rightId). 2) Change storing format for such links: save only 6 bytes instead of 8 (without partition ID). 3) In every delta record constructor, assert that link's partition ID is equal to PageDeltaRecord#pageId. Exception is pages from index partition: they may refer to pages from other partitions by design. was: We had faced numerous bugs when pages that were initially allocated in partition X migrated to partition Y (example: IGNITE-8659). Such migration may cause storage corruption: if partition Y gets evicted, attempt to dereference link to migrated page will cause error. We may prevent such situations in general and gain few percent performance boost at the same time: 1) Locate all links to pages in delta records, including self-links (examples: InitNewPageRecord#newPageId, PagesListSetNextRecord#nextPageId, MergeRecord#rightId). 2) Change storing format for such links: save only 6 bytes instead of 8 (without partition ID). 3) In every delta record constructor, assert that link's partition ID is equal to PageDeltaRecord#pageId. Exception is pages from index partition: they may refer to pages from other partitions by design. > Get rid of partition ID in intra-partition page links stored in delta records > ----------------------------------------------------------------------------- > > Key: IGNITE-11089 > URL: https://issues.apache.org/jira/browse/IGNITE-11089 > Project: Ignite > Issue Type: Improvement > Reporter: Ivan Rakov > Priority: Major > Fix For: 2.8 > > > We had faced numerous bugs when pages that were initially allocated in > partition X migrated to partition Y (example: IGNITE-8659). Such migration > may cause storage corruption: if partition Y gets evicted, attempt to > dereference link to migrated page will cause error. > We may prevent such situations in general and gain a few percent performance > boost at the same time: > 1) Locate all links to pages in delta records, including self-links > (examples: InitNewPageRecord#newPageId, PagesListSetNextRecord#nextPageId, > MergeRecord#rightId). > 2) Change storing format for such links: save only 6 bytes instead of 8 > (without partition ID). > 3) In every delta record constructor, assert that link's partition ID is > equal to PageDeltaRecord#pageId. Exception is pages from index partition: > they may refer to pages from other partitions by design. -- This message was sent by Atlassian JIRA (v7.6.3#76005)