|
|
|
@ -47,6 +47,9 @@ public class TransactionImporter extends Thread {
|
|
|
|
|
/** Map of recent invalid unconfirmed transactions. Key is base58 transaction signature, value is do-not-request expiry timestamp. */ |
|
|
|
|
private final Map<String, Long> invalidUnconfirmedTransactions = Collections.synchronizedMap(new HashMap<>()); |
|
|
|
|
|
|
|
|
|
/** Cached list of unconfirmed transactions, used when counting per creator. This is replaced regularly */ |
|
|
|
|
public static List<TransactionData> unconfirmedTransactionsCache = null; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static synchronized TransactionImporter getInstance() { |
|
|
|
|
if (instance == null) { |
|
|
|
@ -254,6 +257,12 @@ public class TransactionImporter extends Thread {
|
|
|
|
|
int processedCount = 0; |
|
|
|
|
try (final Repository repository = RepositoryManager.getRepository()) { |
|
|
|
|
|
|
|
|
|
// Use a single copy of the unconfirmed transactions list for each cycle, to speed up constant lookups
|
|
|
|
|
// when counting unconfirmed transactions by creator.
|
|
|
|
|
List<TransactionData> unconfirmedTransactions = repository.getTransactionRepository().getUnconfirmedTransactions(); |
|
|
|
|
unconfirmedTransactions.removeIf(t -> t.getType() == Transaction.TransactionType.CHAT); |
|
|
|
|
unconfirmedTransactionsCache = unconfirmedTransactions; |
|
|
|
|
|
|
|
|
|
// Import transactions with valid signatures
|
|
|
|
|
try { |
|
|
|
|
for (int i = 0; i < sigValidTransactions.size(); ++i) { |
|
|
|
@ -317,6 +326,9 @@ public class TransactionImporter extends Thread {
|
|
|
|
|
} finally { |
|
|
|
|
LOGGER.debug("Finished importing {} incoming transaction{}", processedCount, (processedCount == 1 ? "" : "s")); |
|
|
|
|
blockchainLock.unlock(); |
|
|
|
|
|
|
|
|
|
// Clear the unconfirmed transaction cache so new data can be populated in the next cycle
|
|
|
|
|
unconfirmedTransactionsCache = null; |
|
|
|
|
} |
|
|
|
|
} catch (DataException e) { |
|
|
|
|
LOGGER.error("Repository issue while importing incoming transactions", e); |
|
|
|
|