diff --git a/framework/src/main/java/org/tron/core/db/PendingManager.java b/framework/src/main/java/org/tron/core/db/PendingManager.java index b9adebe74ba..9048925dda3 100644 --- a/framework/src/main/java/org/tron/core/db/PendingManager.java +++ b/framework/src/main/java/org/tron/core/db/PendingManager.java @@ -1,7 +1,6 @@ package org.tron.core.db; -import java.util.ArrayList; -import java.util.List; +import java.util.Iterator; import lombok.extern.slf4j.Slf4j; import org.tron.core.capsule.TransactionCapsule; import org.tron.core.config.args.Args; @@ -21,15 +20,13 @@ public PendingManager(Manager db) { @Override public void close() { - List list = new ArrayList<>(); - dbManager.getRePushTransactions().forEach(capsule -> { - if (System.currentTimeMillis() - capsule.getTime() < timeout) { - list.add(capsule); + long now = System.currentTimeMillis(); + Iterator iterator = dbManager.getRePushTransactions().iterator(); + while (iterator.hasNext()) { + if (now - iterator.next().getTime() > timeout) { + iterator.remove(); } - }); - - dbManager.getRePushTransactions().clear(); - dbManager.getRePushTransactions().addAll(list); + } for (TransactionCapsule tx : dbManager.getPendingTransactions()) { txIteration(tx);