This is an automated email from the ASF dual-hosted git repository.
tkalkirill pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new 472c705d818 IGNITE-26231 Update page header documentation in
PersistentPageMemory (#6444)
472c705d818 is described below
commit 472c705d8188cad336f96045b50d885e0460f96c
Author: Kirill Tkalenko <[email protected]>
AuthorDate: Mon Aug 18 19:31:30 2025 +0300
IGNITE-26231 Update page header documentation in PersistentPageMemory
(#6444)
---
.../internal/pagememory/persistence/PageHeader.java | 18 +++++++++++++++++-
.../pagememory/persistence/PersistentPageMemory.java | 15 +++++++--------
2 files changed, 24 insertions(+), 9 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..3ba17e416af 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,14 @@ 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 |
- *
+------------------+--------+--------+----+----+--------+--------+----------------------+
+ * +--------------+----------+
+ * |PAGE_OVERHEAD |PAGE_SIZE |
+ * +--------------+----------+
+ * |Page header |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.
+ * <p>For the structure of the page header, see {@link PageHeader}.</p>
*/
@SuppressWarnings({"LockAcquiredButNotSafelyReleased"})
public class PersistentPageMemory implements PageMemory {
@@ -149,7 +148,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. */