diff --git a/framework/src/main/java/org/tron/core/db/Manager.java b/framework/src/main/java/org/tron/core/db/Manager.java index cd499ec5e5..52d4e0f3b5 100644 --- a/framework/src/main/java/org/tron/core/db/Manager.java +++ b/framework/src/main/java/org/tron/core/db/Manager.java @@ -2268,10 +2268,17 @@ private void postBlockFilter(final BlockCapsule blockCapsule, boolean solidified private void postLogsFilter(final BlockCapsule blockCapsule, boolean solidified, boolean removed) { + long blockNumber = blockCapsule.getNum(); if (!blockCapsule.getTransactions().isEmpty()) { - long blockNumber = blockCapsule.getNum(); - List transactionInfoList - = getTransactionInfoByBlockNum(blockNumber).getTransactionInfoList(); + List transactionInfoList; + // Optimization: If the block result is already in memory, use it directly. + // Avoids re-querying the database for data just written. + if (blockCapsule.getResult() != null) { + transactionInfoList = blockCapsule.getResult().getInstance().getTransactioninfoList(); + } else { + // Fallback to querying from DB if not available in memory. + transactionInfoList = getTransactionInfoByBlockNum(blockNumber).getTransactionInfoList(); + } LogsFilterCapsule logsFilterCapsule = new LogsFilterCapsule(blockNumber, blockCapsule.getBlockId().toString(), blockCapsule.getBloom(), transactionInfoList, solidified, removed);