diff --git a/store/src/main/java/org/apache/rocketmq/store/dledger/DLedgerCommitLog.java b/store/src/main/java/org/apache/rocketmq/store/dledger/DLedgerCommitLog.java index 62640277917..39906eae094 100644 --- a/store/src/main/java/org/apache/rocketmq/store/dledger/DLedgerCommitLog.java +++ b/store/src/main/java/org/apache/rocketmq/store/dledger/DLedgerCommitLog.java @@ -264,6 +264,23 @@ public SelectMappedBufferResult getData(final long offset, final boolean returnF return null; } + + @Override + public boolean getData(final long offset, final int size, final ByteBuffer byteBuffer) { + if (offset < dividedCommitlogOffset) { + return super.getData(offset, size, byteBuffer); + } + if (offset >= dLedgerFileStore.getCommittedPos()) { + return false; + } + int mappedFileSize = this.dLedgerServer.getdLedgerConfig().getMappedFileSizeForEntryData(); + MmapFile mappedFile = this.dLedgerFileList.findMappedFileByOffset(offset, offset == 0); + if (mappedFile != null) { + int pos = (int) (offset % mappedFileSize); + return mappedFile.getData(pos, size, byteBuffer); + } + return false; + } private void recover(long maxPhyOffsetOfConsumeQueue) { dLedgerFileStore.load();