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..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 @@ -149,10 +157,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()); } } @@ -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 @@ -187,7 +197,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; 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++) { 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; }