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;