From b0224651c2b030ec68a80c25127d38eb8c500596 Mon Sep 17 00:00:00 2001 From: CalDescent Date: Fri, 18 Aug 2023 20:32:44 +0100 Subject: [PATCH] Always use rate limiter for metadata requests, and sleep for a random amount of time between fetching metadata items. --- src/main/java/org/qortal/api/resource/ArbitraryResource.java | 2 +- .../qortal/controller/arbitrary/ArbitraryDataManager.java | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/qortal/api/resource/ArbitraryResource.java b/src/main/java/org/qortal/api/resource/ArbitraryResource.java index c617b517..e7a20d0e 100644 --- a/src/main/java/org/qortal/api/resource/ArbitraryResource.java +++ b/src/main/java/org/qortal/api/resource/ArbitraryResource.java @@ -724,7 +724,7 @@ public class ArbitraryResource { ArbitraryDataResource resource = new ArbitraryDataResource(name, ResourceIdType.NAME, service, identifier); try { - ArbitraryDataTransactionMetadata transactionMetadata = ArbitraryMetadataManager.getInstance().fetchMetadata(resource, false); + ArbitraryDataTransactionMetadata transactionMetadata = ArbitraryMetadataManager.getInstance().fetchMetadata(resource, true); if (transactionMetadata != null) { ArbitraryResourceMetadata resourceMetadata = ArbitraryResourceMetadata.fromTransactionMetadata(transactionMetadata, true); if (resourceMetadata != null) { diff --git a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataManager.java b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataManager.java index 9284e672..470fbda9 100644 --- a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataManager.java +++ b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataManager.java @@ -275,7 +275,10 @@ public class ArbitraryDataManager extends Thread { int offset = 0; while (!isStopping) { - Thread.sleep(1000L); + final int minSeconds = 3; + final int maxSeconds = 10; + final int randomSleepTime = new Random().nextInt((maxSeconds - minSeconds + 1)) + minSeconds; + Thread.sleep(randomSleepTime * 1000L); // Any arbitrary transactions we want to fetch data for? try (final Repository repository = RepositoryManager.getRepository()) {