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. */

Reply via email to