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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Service service = arbitraryTransactionData.getService();
|
// Add to queue for update/deletion
|
||||||
String name = arbitraryTransactionData.getName();
|
ArbitraryDataCacheManager.getInstance().addToUpdateQueue(arbitraryTransactionData);
|
||||||
String identifier = arbitraryTransactionData.getIdentifier();
|
|
||||||
|
|
||||||
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() {
|
public int getPowDifficulty() {
|
||||||
|
@ -357,13 +357,6 @@ public class ArbitraryTransaction extends Transaction {
|
|||||||
return;
|
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();
|
Service service = arbitraryTransactionData.getService();
|
||||||
String name = arbitraryTransactionData.getName();
|
String name = arbitraryTransactionData.getName();
|
||||||
String identifier = arbitraryTransactionData.getIdentifier();
|
String identifier = arbitraryTransactionData.getIdentifier();
|
||||||
@ -378,15 +371,23 @@ public class ArbitraryTransaction extends Transaction {
|
|||||||
identifier = "default";
|
identifier = "default";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get existing cached entry if it exists
|
|
||||||
ArbitraryResourceData existingArbitraryResourceData = repository.getArbitraryRepository()
|
|
||||||
.getArbitraryResource(service, name, identifier);
|
|
||||||
|
|
||||||
ArbitraryResourceData arbitraryResourceData = new ArbitraryResourceData();
|
ArbitraryResourceData arbitraryResourceData = new ArbitraryResourceData();
|
||||||
arbitraryResourceData.service = service;
|
arbitraryResourceData.service = service;
|
||||||
arbitraryResourceData.name = name;
|
arbitraryResourceData.name = name;
|
||||||
arbitraryResourceData.identifier = identifier;
|
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
|
// Check for existing cached data
|
||||||
if (existingArbitraryResourceData == null) {
|
if (existingArbitraryResourceData == null) {
|
||||||
// Nothing exists yet, so set everything from the newest transaction
|
// Nothing exists yet, so set everything from the newest transaction
|
||||||
|
Loading…
x
Reference in New Issue
Block a user