[NO ISSUE][STO] Read Only Node's Partitions Resources on Cleanup
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
- When performing global storage clean up, read only the local
resources that belong to the node's partitions.
Change-Id: Ibeb18b70024d9120f039423b1506d54298070d79
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/16063
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Ali Alsuliman <ali.al.solaiman@gmail.com>
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/StorageCleanupRequestMessage.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/StorageCleanupRequestMessage.java
index 281f654..0936512 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/StorageCleanupRequestMessage.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/StorageCleanupRequestMessage.java
@@ -57,13 +57,12 @@
INCMessageBroker broker = (INCMessageBroker) appContext.getServiceContext().getMessageBroker();
PersistentLocalResourceRepository localResourceRepository =
(PersistentLocalResourceRepository) appContext.getLocalResourceRepository();
- Map<Long, LocalResource> localResources = localResourceRepository.loadAndGetAllResources();
Set<Integer> nodePartitions = appContext.getReplicaManager().getPartitions();
+ Map<Long, LocalResource> localResources = localResourceRepository.getResources(lr -> true, nodePartitions);
for (LocalResource resource : localResources.values()) {
DatasetLocalResource lr = (DatasetLocalResource) resource.getResource();
- if (!nodePartitions.contains(lr.getPartition())
- || MetadataIndexImmutableProperties.isMetadataDataset(lr.getDatasetId())) {
- // skip replica partitions and metadata indexes
+ if (MetadataIndexImmutableProperties.isMetadataDataset(lr.getDatasetId())) {
+ // skip metadata indexes
continue;
}
if (!validDatasetIds.contains(lr.getDatasetId())) {