From e0fc4078fc5c8a76199574e7621f9ea95909d414 Mon Sep 17 00:00:00 2001 From: flaymes Date: Thu, 4 Jul 2024 18:43:17 +0800 Subject: [PATCH 1/4] (typo) fix some typo --- .../com/alipay/sofa/jraft/storage/impl/BaseLogStorageTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jraft-core/src/test/java/com/alipay/sofa/jraft/storage/impl/BaseLogStorageTest.java b/jraft-core/src/test/java/com/alipay/sofa/jraft/storage/impl/BaseLogStorageTest.java index 7152d56d6..5eff358b0 100644 --- a/jraft-core/src/test/java/com/alipay/sofa/jraft/storage/impl/BaseLogStorageTest.java +++ b/jraft-core/src/test/java/com/alipay/sofa/jraft/storage/impl/BaseLogStorageTest.java @@ -187,7 +187,7 @@ public void testTruncatePrefix() throws Exception { } @Test - public void testAppendMantyLargeEntries() { + public void testAppendManyLargeEntries() { final long start = Utils.monotonicMs(); final int totalLogs = 100000; final int logSize = 16 * 1024; From 7776a75d577f0a54f0116f56df4bfe48e556fbed Mon Sep 17 00:00:00 2001 From: flaymes Date: Thu, 4 Jul 2024 19:10:54 +0800 Subject: [PATCH 2/4] (chore) adjust the test code order and method of obtaining term id --- .../sofa/jraft/storage/impl/BaseLogStorageTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/jraft-core/src/test/java/com/alipay/sofa/jraft/storage/impl/BaseLogStorageTest.java b/jraft-core/src/test/java/com/alipay/sofa/jraft/storage/impl/BaseLogStorageTest.java index 5eff358b0..60b8771a3 100644 --- a/jraft-core/src/test/java/com/alipay/sofa/jraft/storage/impl/BaseLogStorageTest.java +++ b/jraft-core/src/test/java/com/alipay/sofa/jraft/storage/impl/BaseLogStorageTest.java @@ -149,10 +149,10 @@ public void testAddManyEntries() { assertEquals(0, this.logStorage.getFirstLogIndex()); assertEquals(9, this.logStorage.getLastLogIndex()); for (int i = 0; i < 10; i++) { - assertEquals(i, this.logStorage.getTerm(i)); - final LogEntry entry = this.logStorage.getEntry(i); - assertNotNull(entry); - assertEquals(entries.get(i), entry); + final LogEntry logEntry = this.logStorage.getEntry(i); + assertNotNull(logEntry); + assertEquals(entries.get(i), logEntry); + assertEquals(i, logEntry.getId().getTerm()); } } From 3b56a76a937b91973539da9da1f2d45e82169f5a Mon Sep 17 00:00:00 2001 From: flaymes Date: Thu, 4 Jul 2024 19:56:47 +0800 Subject: [PATCH 3/4] fix typo --- .../java/com/alipay/sofa/jraft/storage/impl/LogManagerTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jraft-core/src/test/java/com/alipay/sofa/jraft/storage/impl/LogManagerTest.java b/jraft-core/src/test/java/com/alipay/sofa/jraft/storage/impl/LogManagerTest.java index e58c8dc88..d2d5d3290 100644 --- a/jraft-core/src/test/java/com/alipay/sofa/jraft/storage/impl/LogManagerTest.java +++ b/jraft-core/src/test/java/com/alipay/sofa/jraft/storage/impl/LogManagerTest.java @@ -202,7 +202,7 @@ public void run(final Status status) { } @Test - public void testAppendEntresConflicts() throws Exception { + public void testAppendEntriesConflicts() throws Exception { //Append 0-10 List mockEntries = TestUtils.mockEntries(10); for (int i = 0; i < 10; i++) { From fd257169f5108f16fb115881b48f962ca2d7a526 Mon Sep 17 00:00:00 2001 From: flaymes Date: Fri, 5 Jul 2024 23:58:15 +0800 Subject: [PATCH 4/4] chore: update getTerm calls --- .../storage/impl/BaseLogStorageTest.java | 26 ++++++++++++----- .../storage/impl/BaseLogStorageTest.java | 29 +++++++++++++------ .../sofa/jraft/storage/HybridLogStorage.java | 8 ++--- 3 files changed, 41 insertions(+), 22 deletions(-) diff --git a/jraft-core/src/test/java/com/alipay/sofa/jraft/storage/impl/BaseLogStorageTest.java b/jraft-core/src/test/java/com/alipay/sofa/jraft/storage/impl/BaseLogStorageTest.java index 60b8771a3..bb212830e 100644 --- a/jraft-core/src/test/java/com/alipay/sofa/jraft/storage/impl/BaseLogStorageTest.java +++ b/jraft-core/src/test/java/com/alipay/sofa/jraft/storage/impl/BaseLogStorageTest.java @@ -86,7 +86,6 @@ public void testEmptyState() { assertEquals(1, this.logStorage.getFirstLogIndex()); assertEquals(0, this.logStorage.getLastLogIndex()); assertNull(this.logStorage.getEntry(100)); - assertEquals(0, this.logStorage.getTerm(100)); } @Test @@ -96,18 +95,27 @@ public void testAddOneEntryState() { assertEquals(100, this.logStorage.getFirstLogIndex()); assertEquals(100, this.logStorage.getLastLogIndex()); - Assert.assertEquals(entry1, this.logStorage.getEntry(100)); - assertEquals(1, this.logStorage.getTerm(100)); + LogEntry logEntry1 = this.logStorage.getEntry(100); + assertNotNull(logEntry1); + assertEquals(entry1, logEntry1); + assertEquals(1, logEntry1.getId().getTerm()); final LogEntry entry2 = TestUtils.mockEntry(200, 2); assertTrue(this.logStorage.appendEntry(entry2)); assertEquals(100, this.logStorage.getFirstLogIndex()); assertEquals(200, this.logStorage.getLastLogIndex()); - Assert.assertEquals(entry1, this.logStorage.getEntry(100)); - Assert.assertEquals(entry2, this.logStorage.getEntry(200)); - assertEquals(1, this.logStorage.getTerm(100)); - assertEquals(2, this.logStorage.getTerm(200)); + + logEntry1 = this.logStorage.getEntry(100); + final LogEntry logEntry2 = this.logStorage.getEntry(200); + assertNotNull(logEntry1); + assertNotNull(logEntry2); + + Assert.assertEquals(entry1, logEntry1); + Assert.assertEquals(entry2, logEntry2); + + assertEquals(1, logEntry1.getId().getTerm()); + assertEquals(2, logEntry2.getId().getTerm()); } @Test @@ -162,7 +170,9 @@ public void testReset() { this.logStorage.reset(5); assertEquals(5, this.logStorage.getFirstLogIndex()); assertEquals(5, this.logStorage.getLastLogIndex()); - assertEquals(5, this.logStorage.getTerm(5)); + final LogEntry logEntry = this.logStorage.getEntry(5); + assertNotNull(logEntry); + assertEquals(5, logEntry.getId().getTerm()); } @Test diff --git a/jraft-extension/bdb-log-storage-impl/src/test/java/com/alipay/sofa/jraft/storage/impl/BaseLogStorageTest.java b/jraft-extension/bdb-log-storage-impl/src/test/java/com/alipay/sofa/jraft/storage/impl/BaseLogStorageTest.java index 2d4532b38..d435ea2d5 100644 --- a/jraft-extension/bdb-log-storage-impl/src/test/java/com/alipay/sofa/jraft/storage/impl/BaseLogStorageTest.java +++ b/jraft-extension/bdb-log-storage-impl/src/test/java/com/alipay/sofa/jraft/storage/impl/BaseLogStorageTest.java @@ -84,7 +84,6 @@ public void testEmptyState() { assertEquals(1, this.logStorage.getFirstLogIndex()); assertEquals(0, this.logStorage.getLastLogIndex()); assertNull(this.logStorage.getEntry(100)); - assertEquals(0, this.logStorage.getTerm(100)); } @Test @@ -95,17 +94,27 @@ public void testAddOneEntryState() { assertEquals(100, this.logStorage.getFirstLogIndex()); assertEquals(100, this.logStorage.getLastLogIndex()); Assert.assertEquals(entry1, this.logStorage.getEntry(100)); - assertEquals(1, this.logStorage.getTerm(100)); + LogEntry logEntry1 = this.logStorage.getEntry(100); + assertNotNull(logEntry1); + assertEquals(entry1, logEntry1); + assertEquals(1, logEntry1.getId().getTerm()); final LogEntry entry2 = TestUtils.mockEntry(200, 2); assertTrue(this.logStorage.appendEntry(entry2)); assertEquals(100, this.logStorage.getFirstLogIndex()); assertEquals(200, this.logStorage.getLastLogIndex()); - Assert.assertEquals(entry1, this.logStorage.getEntry(100)); - Assert.assertEquals(entry2, this.logStorage.getEntry(200)); - assertEquals(1, this.logStorage.getTerm(100)); - assertEquals(2, this.logStorage.getTerm(200)); + + logEntry1 = this.logStorage.getEntry(100); + final LogEntry logEntry2 = this.logStorage.getEntry(200); + assertNotNull(logEntry1); + assertNotNull(logEntry2); + + Assert.assertEquals(entry1, logEntry1); + Assert.assertEquals(entry2, logEntry2); + + assertEquals(1, logEntry1.getId().getTerm()); + assertEquals(2, logEntry2.getId().getTerm()); } @Test @@ -147,8 +156,8 @@ public void testAddManyEntries() { assertEquals(0, this.logStorage.getFirstLogIndex()); assertEquals(9, this.logStorage.getLastLogIndex()); for (int i = 0; i < 10; i++) { - assertEquals(i, this.logStorage.getTerm(i)); final LogEntry entry = this.logStorage.getEntry(i); + assertEquals(i, entry.getId().getTerm()); assertNotNull(entry); assertEquals(entries.get(i), entry); } @@ -160,7 +169,9 @@ public void testReset() { this.logStorage.reset(5); assertEquals(5, this.logStorage.getFirstLogIndex()); assertEquals(5, this.logStorage.getLastLogIndex()); - assertEquals(5, this.logStorage.getTerm(5)); + final LogEntry logEntry = this.logStorage.getEntry(5); + assertNotNull(logEntry); + assertEquals(5, logEntry.getId().getTerm()); } @Test @@ -181,7 +192,7 @@ public void testTruncatePrefix() { } @Test - public void testAppendMantyLargeEntries() { + public void testAppendManyLargeEntries() { final long start = Utils.monotonicMs(); final int totalLogs = 100000; final int logSize = 16 * 1024; diff --git a/jraft-extension/java-log-storage-impl/src/main/java/com/alipay/sofa/jraft/storage/HybridLogStorage.java b/jraft-extension/java-log-storage-impl/src/main/java/com/alipay/sofa/jraft/storage/HybridLogStorage.java index 2be22f4ed..8d42ee112 100644 --- a/jraft-extension/java-log-storage-impl/src/main/java/com/alipay/sofa/jraft/storage/HybridLogStorage.java +++ b/jraft-extension/java-log-storage-impl/src/main/java/com/alipay/sofa/jraft/storage/HybridLogStorage.java @@ -141,11 +141,9 @@ public LogEntry getEntry(final long index) { @Override public long getTerm(final long index) { - if (index >= this.thresholdIndex) { - return this.newLogStorage.getTerm(index); - } - if (isOldStorageExist()) { - return this.oldLogStorage.getTerm(index); + final LogEntry entry = getEntry(index); + if (entry != null) { + return entry.getId().getTerm(); } return 0; }