This is an automated email from the ASF dual-hosted git repository.

jinrongtong pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git


The following commit(s) were added to refs/heads/develop by this push:
     new d75ab111f [ISSUE #6406] Add more visual comments on IndexFile & 
IndexHeader & ConsumeQueue
d75ab111f is described below

commit d75ab111f39deded98918bf4cd033eaffd176593
Author: TheR1sing3un <[email protected]>
AuthorDate: Tue Mar 21 08:42:40 2023 +0800

    [ISSUE #6406] Add more visual comments on IndexFile & IndexHeader & 
ConsumeQueue
    
    1. add more visual comments
---
 .../main/java/org/apache/rocketmq/store/ConsumeQueue.java   | 13 +++++++++++++
 .../java/org/apache/rocketmq/store/index/IndexFile.java     | 13 +++++++++++++
 .../java/org/apache/rocketmq/store/index/IndexHeader.java   | 13 +++++++++++++
 3 files changed, 39 insertions(+)

diff --git a/store/src/main/java/org/apache/rocketmq/store/ConsumeQueue.java 
b/store/src/main/java/org/apache/rocketmq/store/ConsumeQueue.java
index 3530b1c39..f2a98a83e 100644
--- a/store/src/main/java/org/apache/rocketmq/store/ConsumeQueue.java
+++ b/store/src/main/java/org/apache/rocketmq/store/ConsumeQueue.java
@@ -43,6 +43,19 @@ import org.apache.rocketmq.store.queue.ReferredIterator;
 public class ConsumeQueue implements ConsumeQueueInterface, FileQueueLifeCycle 
{
     private static final Logger log = 
LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
 
+    /**
+     * ConsumeQueue's store unit. Format:
+     * <pre>
+     * 
┌───────────────────────────────┬───────────────────┬───────────────────────────────┐
+     * │    CommitLog Physical Offset  │      Body Size    │            Tag 
HashCode       │
+     * │          (8 Bytes)            │      (4 Bytes)    │             (8 
Bytes)         │
+     * 
├───────────────────────────────┴───────────────────┴───────────────────────────────┤
+     * │                                     Store Unit                        
            │
+     * │                                                                       
            │
+     * </pre>
+     * ConsumeQueue's store unit. Size:
+     * CommitLog Physical Offset(8) + Body Size(4) + Tag HashCode(8) = 20 Bytes
+     */
     public static final int CQ_STORE_UNIT_SIZE = 20;
     public static final int MSG_TAG_OFFSET_INDEX = 12;
     private static final Logger LOG_ERROR = 
LoggerFactory.getLogger(LoggerName.STORE_ERROR_LOGGER_NAME);
diff --git a/store/src/main/java/org/apache/rocketmq/store/index/IndexFile.java 
b/store/src/main/java/org/apache/rocketmq/store/index/IndexFile.java
index 27afab806..9e0669fa0 100644
--- a/store/src/main/java/org/apache/rocketmq/store/index/IndexFile.java
+++ b/store/src/main/java/org/apache/rocketmq/store/index/IndexFile.java
@@ -30,6 +30,19 @@ import org.apache.rocketmq.store.logfile.MappedFile;
 public class IndexFile {
     private static final Logger log = 
LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
     private static int hashSlotSize = 4;
+    /**
+     * Each index's store unit. Format:
+     * <pre>
+     * 
┌───────────────┬───────────────────────────────┬───────────────┬───────────────┐
+     * │ Key HashCode  │        Physical Offset        │   Time Diff   │ Next 
Index Pos│
+     * │   (4 Bytes)   │          (8 Bytes)            │   (4 Bytes)   │   (4 
Bytes)   │
+     * 
├───────────────┴───────────────────────────────┴───────────────┴───────────────┤
+     * │                                 Index Store Unit                      
        │
+     * │                                                                       
        │
+     * </pre>
+     * Each index's store unit. Size:
+     * Key HashCode(4) + Physical Offset(8) + Time Diff(4) + Next Index Pos(4) 
= 20 Bytes
+     */
     private static int indexSize = 20;
     private static int invalidIndex = 0;
     private final int hashSlotNum;
diff --git 
a/store/src/main/java/org/apache/rocketmq/store/index/IndexHeader.java 
b/store/src/main/java/org/apache/rocketmq/store/index/IndexHeader.java
index fbb3f0847..fe319caad 100644
--- a/store/src/main/java/org/apache/rocketmq/store/index/IndexHeader.java
+++ b/store/src/main/java/org/apache/rocketmq/store/index/IndexHeader.java
@@ -20,6 +20,19 @@ import java.nio.ByteBuffer;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
 
+/**
+ * Index File Header. Format:
+ * <pre>
+ * 
┌───────────────────────────────┬───────────────────────────────┬───────────────────────────────┬───────────────────────────────┬───────────────────┬───────────────────┐
+ * │        Begin Timestamp        │          End Timestamp        │     Begin 
Physical Offset     │       End Physical Offset     │  Hash Slot Count  │    
Index Count    │
+ * │           (8 Bytes)           │            (8 Bytes)          │           
(8 Bytes)           │           (8 Bytes)           │      (4 Bytes)    │      
(4 Bytes)    │
+ * 
├───────────────────────────────┴───────────────────────────────┴───────────────────────────────┴───────────────────────────────┴───────────────────┴───────────────────┤
+ * │                                                                      
Index File Header                                                               
                 │
+ * │
+ * </pre>
+ * Index File Header. Size:
+ * Begin Timestamp(8) + End Timestamp(8) + Begin Physical Offset(8) + End 
Physical Offset(8) + Hash Slot Count(4) + Index Count(4) = 40 Bytes
+ */
 public class IndexHeader {
     public static final int INDEX_HEADER_SIZE = 40;
     private static int beginTimestampIndex = 0;

Reply via email to