diff --git a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataManager.java b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataManager.java index f70354d6..1e24ae70 100644 --- a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataManager.java +++ b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataManager.java @@ -546,32 +546,9 @@ public class ArbitraryDataManager extends Thread { return; } - Service service = arbitraryTransactionData.getService(); - String name = arbitraryTransactionData.getName(); - String identifier = arbitraryTransactionData.getIdentifier(); + // Add to queue for update/deletion + ArbitraryDataCacheManager.getInstance().addToUpdateQueue(arbitraryTransactionData); - ArbitraryResourceData arbitraryResourceData = new ArbitraryResourceData(); - arbitraryResourceData.service = service; - arbitraryResourceData.name = name; - arbitraryResourceData.identifier = identifier; - - try (final Repository repository = RepositoryManager.getRepository()) { - // Find next oldest transaction (which is now the latest transaction) - ArbitraryTransactionData latestTransactionData = repository.getArbitraryRepository().getLatestTransaction(name, service, null, identifier); - - if (latestTransactionData == null) { - // There are no transactions anymore, so we can delete from the cache entirely (this deletes metadata too) - repository.getArbitraryRepository().delete(arbitraryResourceData); - } - else { - // We found the next oldest transaction, so add to queue for processing - ArbitraryDataCacheManager.getInstance().addToUpdateQueue(arbitraryTransactionData); - } -; - repository.saveChanges(); - } catch (DataException e) { - // Not much we can do, so ignore for now - } } public int getPowDifficulty() { diff --git a/src/main/java/org/qortal/transaction/ArbitraryTransaction.java b/src/main/java/org/qortal/transaction/ArbitraryTransaction.java index d931e231..46b26f6b 100644 --- a/src/main/java/org/qortal/transaction/ArbitraryTransaction.java +++ b/src/main/java/org/qortal/transaction/ArbitraryTransaction.java @@ -357,13 +357,6 @@ public class ArbitraryTransaction extends Transaction { return; } - // Get the latest transaction - ArbitraryTransactionData latestTransactionData = repository.getArbitraryRepository().getLatestTransaction(arbitraryTransactionData.getName(), arbitraryTransactionData.getService(), null, arbitraryTransactionData.getIdentifier()); - if (latestTransactionData == null) { - // We don't have a latest transaction, so give up - return; - } - Service service = arbitraryTransactionData.getService(); String name = arbitraryTransactionData.getName(); String identifier = arbitraryTransactionData.getIdentifier(); @@ -378,15 +371,23 @@ public class ArbitraryTransaction extends Transaction { identifier = "default"; } - // Get existing cached entry if it exists - ArbitraryResourceData existingArbitraryResourceData = repository.getArbitraryRepository() - .getArbitraryResource(service, name, identifier); - ArbitraryResourceData arbitraryResourceData = new ArbitraryResourceData(); arbitraryResourceData.service = service; arbitraryResourceData.name = name; arbitraryResourceData.identifier = identifier; + // Get the latest transaction + ArbitraryTransactionData latestTransactionData = repository.getArbitraryRepository().getLatestTransaction(arbitraryTransactionData.getName(), arbitraryTransactionData.getService(), null, arbitraryTransactionData.getIdentifier()); + if (latestTransactionData == null) { + // We don't have a latest transaction, so delete from cache + repository.getArbitraryRepository().delete(arbitraryResourceData); + return; + } + + // Get existing cached entry if it exists + ArbitraryResourceData existingArbitraryResourceData = repository.getArbitraryRepository() + .getArbitraryResource(service, name, identifier); + // Check for existing cached data if (existingArbitraryResourceData == null) { // Nothing exists yet, so set everything from the newest transaction