mirror of
https://github.com/Qortal/qortal.git
synced 2025-05-04 16:57:51 +00:00
Update QDN cache when receiving a metadata file as part of a resource download.
This commit is contained in:
parent
707176a202
commit
7e872f7800
@ -146,7 +146,7 @@ public class ArbitraryDataFileManager extends Thread {
|
|||||||
if (!arbitraryDataFileRequests.containsKey(Base58.encode(hash))) {
|
if (!arbitraryDataFileRequests.containsKey(Base58.encode(hash))) {
|
||||||
LOGGER.debug("Requesting data file {} from peer {}", hash58, peer);
|
LOGGER.debug("Requesting data file {} from peer {}", hash58, peer);
|
||||||
Long startTime = NTP.getTime();
|
Long startTime = NTP.getTime();
|
||||||
ArbitraryDataFile receivedArbitraryDataFile = fetchArbitraryDataFile(peer, null, signature, hash, null);
|
ArbitraryDataFile receivedArbitraryDataFile = fetchArbitraryDataFile(peer, null, arbitraryTransactionData, signature, hash, null);
|
||||||
Long endTime = NTP.getTime();
|
Long endTime = NTP.getTime();
|
||||||
if (receivedArbitraryDataFile != null) {
|
if (receivedArbitraryDataFile != null) {
|
||||||
LOGGER.debug("Received data file {} from peer {}. Time taken: {} ms", receivedArbitraryDataFile.getHash58(), peer, (endTime-startTime));
|
LOGGER.debug("Received data file {} from peer {}. Time taken: {} ms", receivedArbitraryDataFile.getHash58(), peer, (endTime-startTime));
|
||||||
@ -191,7 +191,7 @@ public class ArbitraryDataFileManager extends Thread {
|
|||||||
return receivedAtLeastOneFile;
|
return receivedAtLeastOneFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ArbitraryDataFile fetchArbitraryDataFile(Peer peer, Peer requestingPeer, byte[] signature, byte[] hash, Message originalMessage) throws DataException {
|
private ArbitraryDataFile fetchArbitraryDataFile(Peer peer, Peer requestingPeer, ArbitraryTransactionData arbitraryTransactionData, byte[] signature, byte[] hash, Message originalMessage) throws DataException {
|
||||||
ArbitraryDataFile existingFile = ArbitraryDataFile.fromHash(hash, signature);
|
ArbitraryDataFile existingFile = ArbitraryDataFile.fromHash(hash, signature);
|
||||||
boolean fileAlreadyExists = existingFile.exists();
|
boolean fileAlreadyExists = existingFile.exists();
|
||||||
String hash58 = Base58.encode(hash);
|
String hash58 = Base58.encode(hash);
|
||||||
@ -250,6 +250,13 @@ public class ArbitraryDataFileManager extends Thread {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If this is a metadata file then we need to update the cache
|
||||||
|
if (arbitraryTransactionData != null && arbitraryTransactionData.getMetadataHash() != null) {
|
||||||
|
if (Arrays.equals(arbitraryTransactionData.getMetadataHash(), hash)) {
|
||||||
|
ArbitraryDataCacheManager.getInstance().addToUpdateQueue(arbitraryTransactionData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return arbitraryDataFile;
|
return arbitraryDataFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -585,7 +592,9 @@ public class ArbitraryDataFileManager extends Thread {
|
|||||||
|
|
||||||
// Forward the message to this peer
|
// Forward the message to this peer
|
||||||
LOGGER.debug("Asking peer {} for hash {}", peerToAsk, hash58);
|
LOGGER.debug("Asking peer {} for hash {}", peerToAsk, hash58);
|
||||||
this.fetchArbitraryDataFile(peerToAsk, peer, signature, hash, message);
|
// No need to pass arbitraryTransactionData below because this is only used for metadata caching,
|
||||||
|
// and metadata isn't retained when relaying.
|
||||||
|
this.fetchArbitraryDataFile(peerToAsk, peer, null, signature, hash, message);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
LOGGER.debug("Peer {} not found in relay info", peer);
|
LOGGER.debug("Peer {} not found in relay info", peer);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user