This is an automated email from the ASF dual-hosted git repository. tkalkirill pushed a commit to branch ignite-26231 in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit 6218b1c1fc7c94436ff69e1643592535c8a0e804 Author: Kirill Tkalenko <[email protected]> AuthorDate: Mon Aug 18 18:10:36 2025 +0300 IGNITE-26231 wip --- .../internal/pagememory/persistence/PageHeader.java | 18 +++++++++++++++++- .../pagememory/persistence/PersistentPageMemory.java | 15 ++++++--------- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/PageHeader.java b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/PageHeader.java index f6dcddd8a07..a58d5104c4e 100644 --- a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/PageHeader.java +++ b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/PageHeader.java @@ -30,7 +30,23 @@ import static org.apache.ignite.internal.util.GridUnsafe.putLongVolatile; import org.apache.ignite.internal.pagememory.FullPageId; /** - * Page header. + * Helper class for working with the page header that is stored in memory for {@link PersistentPageMemory}. + * + * <p>Page header has the following structure:</p> + * <pre> + * +-----------------+---------------------+--------+--------+---------+----------+----------+----------------------+ + * | 8 bytes | 4 bytes |4 bytes |8 bytes |4 bytes |4 bytes |8 bytes | 8 bytes | + * +-----------------+---------------------+--------+--------+---------+----------+----------+----------------------+ + * |Marker/Timestamp |Partition generation |Flags |Page ID |Group ID |Pin count |Lock data |Checkpoint tmp buffer | + * +-----------------+---------------------+--------+--------+---------+----------+----------+----------------------+ + * </pre> + * + * <p>Additional information:</p> + * <ul> + * <li>Size of the page header in {@link PersistentPageMemory#PAGE_OVERHEAD}.</li> + * <li>Flags currently store only one value, whether the page is dirty or not. Only one byte is used for now, the rest can be reused + * later, we do not remove them only for alignment.</li> + * </ul> */ // TODO: IGNITE-16350 Improve documentation and refactoring public class PageHeader { diff --git a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/PersistentPageMemory.java b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/PersistentPageMemory.java index 5990f1b9166..e05502f597a 100644 --- a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/PersistentPageMemory.java +++ b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/PersistentPageMemory.java @@ -122,15 +122,12 @@ import org.jetbrains.annotations.TestOnly; * * <p>When page is allocated and is in use: * <pre> - * +------------------+--------+--------+----+----+--------+--------+----------------------+ - * | 8 bytes |8 bytes |8 bytes |4 b |4 b |8 bytes |8 bytes | PAGE_SIZE | - * +------------------+--------+--------+----+----+--------+--------+----------------------+ - * | Marker/Timestamp |Rel ptr |Page ID |C ID|PIN | LOCK |TMP BUF | Page data | - * +------------------+--------+--------+----+----+--------+--------+----------------------+ + * +-----------------------+----------+ + * |{@link #PAGE_OVERHEAD} |PAGE_SIZE | + * +-----------------------+----------+ + * |{@link PageHeader} |Page data | + * +-----------------------+----------+ * </pre> - * - * <p>Note that first 8 bytes of page header are used either for page marker or for next relative pointer depending on whether the page is - * in use or not. */ @SuppressWarnings({"LockAcquiredButNotSafelyReleased"}) public class PersistentPageMemory implements PageMemory { @@ -149,7 +146,7 @@ public class PersistentPageMemory implements PageMemory { /** Page lock offset. */ public static final int PAGE_LOCK_OFFSET = 32; - /** 8b Marker/timestamp 8b Relative pointer 8b Page ID 4b Group ID 4b Pin count 8b Lock 8b Temporary buffer. */ + /** 8b Marker/timestamp, 4b Partition generation, 4b flags, 8b Page ID, 4b Group ID, 4b Pin count, 8b Lock, 8b Temporary buffer. */ public static final int PAGE_OVERHEAD = 48; /** Try again tag. */
