From 94f4c501fa1fe4aaf3b69383d5e86dc7cf345341 Mon Sep 17 00:00:00 2001 From: CalDescent Date: Sun, 7 May 2023 11:49:57 +0100 Subject: [PATCH] Update caches where possible when processing arbitrary transactions. --- .../transaction/ArbitraryTransaction.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/main/java/org/qortal/transaction/ArbitraryTransaction.java b/src/main/java/org/qortal/transaction/ArbitraryTransaction.java index 88be95a2..2a3c78af 100644 --- a/src/main/java/org/qortal/transaction/ArbitraryTransaction.java +++ b/src/main/java/org/qortal/transaction/ArbitraryTransaction.java @@ -5,6 +5,8 @@ import java.util.List; import java.util.Objects; import java.util.stream.Collectors; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.qortal.account.Account; import org.qortal.arbitrary.metadata.ArbitraryDataTransactionMetadata; import org.qortal.arbitrary.misc.Service; @@ -32,6 +34,8 @@ import org.qortal.utils.NTP; public class ArbitraryTransaction extends Transaction { + private static final Logger LOGGER = LogManager.getLogger(ArbitraryTransaction.class); + // Properties private ArbitraryTransactionData arbitraryTransactionData; @@ -274,6 +278,30 @@ public class ArbitraryTransaction extends Transaction { public void process() throws DataException { // Wrap and delegate payment processing to Payment class. new Payment(this.repository).process(arbitraryTransactionData.getSenderPublicKey(), arbitraryTransactionData.getPayments()); + + // Update caches + this.updateCaches(); + } + + private void updateCaches() { + try { + // If the data is local, we need to perform a few actions + if (isDataLocal()) { + + // We have the data for this transaction, so invalidate the file cache + if (arbitraryTransactionData.getName() != null) { + ArbitraryDataManager.getInstance().invalidateCache(arbitraryTransactionData); + } + } + + // Add/update arbitrary resource caches + this.updateArbitraryResourceCache(); + this.updateArbitraryMetadataCache(); + + } catch (Exception e) { + // Log and ignore all exceptions. The cache is updated from other places too, and can be rebuilt if needed. + LOGGER.info("Unable to update arbitrary caches", e); + } } @Override