forked from Qortal/qortal
Automatically delete cached resources & metadata if there is no longer a latest transaction.
This commit is contained in:
parent
b661d39844
commit
36a731255a
@ -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() {
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user