diff --git a/src/main/java/org/qortal/api/resource/ArbitraryResource.java b/src/main/java/org/qortal/api/resource/ArbitraryResource.java index 062419fa..5b839dce 100644 --- a/src/main/java/org/qortal/api/resource/ArbitraryResource.java +++ b/src/main/java/org/qortal/api/resource/ArbitraryResource.java @@ -592,7 +592,7 @@ public class ArbitraryResource { Security.checkApiCallAllowed(request); ArbitraryDataResource resource = new ArbitraryDataResource(name, ResourceIdType.NAME, service, identifier); - return resource.delete(); + return resource.delete(false); } @POST diff --git a/src/main/java/org/qortal/arbitrary/ArbitraryDataFile.java b/src/main/java/org/qortal/arbitrary/ArbitraryDataFile.java index 53560e5f..6ce054ba 100644 --- a/src/main/java/org/qortal/arbitrary/ArbitraryDataFile.java +++ b/src/main/java/org/qortal/arbitrary/ArbitraryDataFile.java @@ -388,12 +388,15 @@ public class ArbitraryDataFile { return false; } - public boolean deleteAll() { + public boolean deleteAll(boolean deleteMetadata) { // Delete the complete file boolean fileDeleted = this.delete(); - // Delete the metadata file - boolean metadataDeleted = this.deleteMetadata(); + // Delete the metadata file if requested + boolean metadataDeleted = false; + if (deleteMetadata) { + metadataDeleted = this.deleteMetadata(); + } // Delete the individual chunks boolean chunksDeleted = this.deleteAllChunks(); diff --git a/src/main/java/org/qortal/arbitrary/ArbitraryDataResource.java b/src/main/java/org/qortal/arbitrary/ArbitraryDataResource.java index 7e3c4ea8..e1279c55 100644 --- a/src/main/java/org/qortal/arbitrary/ArbitraryDataResource.java +++ b/src/main/java/org/qortal/arbitrary/ArbitraryDataResource.java @@ -140,7 +140,7 @@ public class ArbitraryDataResource { return null; } - public boolean delete() { + public boolean delete(boolean deleteMetadata) { try { this.fetchTransactions(); if (this.transactions == null) { @@ -157,7 +157,7 @@ public class ArbitraryDataResource { arbitraryDataFile.setMetadataHash(metadataHash); // Delete any chunks or complete files from each transaction - arbitraryDataFile.deleteAll(); + arbitraryDataFile.deleteAll(deleteMetadata); } // Also delete cached data for the entire resource diff --git a/src/main/java/org/qortal/arbitrary/ArbitraryDataTransactionBuilder.java b/src/main/java/org/qortal/arbitrary/ArbitraryDataTransactionBuilder.java index 2faf945d..afe4f4db 100644 --- a/src/main/java/org/qortal/arbitrary/ArbitraryDataTransactionBuilder.java +++ b/src/main/java/org/qortal/arbitrary/ArbitraryDataTransactionBuilder.java @@ -281,7 +281,7 @@ public class ArbitraryDataTransactionBuilder { } catch (DataException e) { if (arbitraryDataFile != null) { - arbitraryDataFile.deleteAll(); + arbitraryDataFile.deleteAll(true); } throw(e); } @@ -315,7 +315,7 @@ public class ArbitraryDataTransactionBuilder { Transaction.ValidationResult result = transaction.isValidUnconfirmed(); if (result != Transaction.ValidationResult.OK) { - arbitraryDataFile.deleteAll(); + arbitraryDataFile.deleteAll(true); throw new DataException(String.format("Arbitrary transaction invalid: %s", result)); } LOGGER.info("Transaction is valid"); diff --git a/src/main/java/org/qortal/repository/hsqldb/HSQLDBArbitraryRepository.java b/src/main/java/org/qortal/repository/hsqldb/HSQLDBArbitraryRepository.java index 878c262f..babe905e 100644 --- a/src/main/java/org/qortal/repository/hsqldb/HSQLDBArbitraryRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/HSQLDBArbitraryRepository.java @@ -155,8 +155,8 @@ public class HSQLDBArbitraryRepository implements ArbitraryRepository { ArbitraryDataFile arbitraryDataFile = ArbitraryDataFile.fromHash(hash, signature); arbitraryDataFile.setMetadataHash(metadataHash); - // Delete file and chunks - arbitraryDataFile.deleteAll(); + // Delete file, chunks, and metadata + arbitraryDataFile.deleteAll(true); } @Override diff --git a/src/main/java/org/qortal/utils/ArbitraryTransactionUtils.java b/src/main/java/org/qortal/utils/ArbitraryTransactionUtils.java index 68909dee..c3016878 100644 --- a/src/main/java/org/qortal/utils/ArbitraryTransactionUtils.java +++ b/src/main/java/org/qortal/utils/ArbitraryTransactionUtils.java @@ -249,7 +249,7 @@ public class ArbitraryTransactionUtils { ArbitraryDataFile arbitraryDataFile = ArbitraryDataFile.fromHash(completeHash, signature); arbitraryDataFile.setMetadataHash(metadataHash); - arbitraryDataFile.deleteAll(); + arbitraryDataFile.deleteAll(true); } public static void convertFileToChunks(ArbitraryTransactionData arbitraryTransactionData, long now, long cleanupAfter) throws DataException {