diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java index f8738ecd4bd86..d85ea534f2e60 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java @@ -2355,17 +2355,13 @@ protected CompletableFuture internalGetMessageIdByTimestamp(long time ManagedLedger ledger = ((PersistentTopic) topic).getManagedLedger(); return ledger.asyncFindPosition(entry -> { - MessageImpl msg = null; try { - msg = MessageImpl.deserializeBrokerEntryMetaDataFirst(entry.getDataBuffer()); - return msg.publishedEarlierThan(timestamp); + long entryTimestamp = MessageImpl.getEntryTimestamp(entry.getDataBuffer()); + return MessageImpl.isEntryPublishedEarlierThan(entryTimestamp, timestamp); } catch (Exception e) { log.error("[{}] Error deserializing message for message position find", topicName, e); } finally { entry.release(); - if (msg != null) { - msg.recycle(); - } } return false; }).thenApply(position -> {