diff --git a/dledger/src/main/java/io/openmessaging/storage/dledger/DLedgerServer.java b/dledger/src/main/java/io/openmessaging/storage/dledger/DLedgerServer.java index f0391f3e..a3f2b4ca 100644 --- a/dledger/src/main/java/io/openmessaging/storage/dledger/DLedgerServer.java +++ b/dledger/src/main/java/io/openmessaging/storage/dledger/DLedgerServer.java @@ -361,6 +361,7 @@ public AppendFuture appendAsLeader(List bodies) thr entry = dLedgerStore.appendAsLeader(dLedgerEntry); future = new AppendFuture<>(); } + future.setPos(entry.getPos()); final DLedgerEntry finalResEntry = entry; final AppendFuture finalFuture = future; final long totalBytesFinal = totalBytes; diff --git a/dledger/src/test/java/io/openmessaging/storage/dledger/AppendAndPushTest.java b/dledger/src/test/java/io/openmessaging/storage/dledger/AppendAndPushTest.java index f0ccd532..d9104101 100644 --- a/dledger/src/test/java/io/openmessaging/storage/dledger/AppendAndPushTest.java +++ b/dledger/src/test/java/io/openmessaging/storage/dledger/AppendAndPushTest.java @@ -59,6 +59,8 @@ public void testPushCommittedIndex() throws Exception { appendEntryRequest.setBody(new byte[256]); CompletableFuture future = dLedgerServer0.handleAppend(appendEntryRequest); Assertions.assertInstanceOf(AppendFuture.class, future); + Assertions.assertEquals((DLedgerEntry.BODY_OFFSET + 256L) * i, + ((AppendFuture) future).getPos()); futures.add(future); } Assertions.assertEquals(9, dLedgerServer0.getDLedgerStore().getLedgerEndIndex()); @@ -257,6 +259,7 @@ public void testBatchAppend() throws Exception { Assertions.assertEquals(BatchAppendFuture.class, future.getClass()); long[] positions = ((BatchAppendFuture) future).getPositions(); Assertions.assertEquals(count, positions.length); + Assertions.assertEquals(positions[count - 1], ((BatchAppendFuture) future).getPos()); for (int i = 1; i < count; i++) { Assertions.assertEquals(DLedgerEntry.BODY_OFFSET * i + unitSize * (1 + i) * i / 2, positions[i]);