This is an automated email from the ASF dual-hosted git repository.

alsuliman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git


The following commit(s) were added to refs/heads/master by this push:
     new ab99ed9a96 [ASTERIXDB-3222][COMP] Align compute-to-storage map with 
constraints
ab99ed9a96 is described below

commit ab99ed9a96a2926e1590b018740f29d74fc43cb6
Author: Ali Alsuliman <[email protected]>
AuthorDate: Sun Jul 9 01:38:33 2023 -0700

    [ASTERIXDB-3222][COMP] Align compute-to-storage map with constraints
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Details:
    When constructing the compute-to-storage map that is used for the
    PartitioningProperties, the map should be constructed such that it is
    aligned with the AlgebricksPartitionConstraint
    
    Change-Id: I0050538ab25134acacf74775909d83bbe050c6f0
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17634
    Integration-Tests: Jenkins <[email protected]>
    Reviewed-by: Murtadha Al Hubail <[email protected]>
    Tested-by: Murtadha Al Hubail <[email protected]>
---
 .../asterix/common/cluster/StorageComputePartitionsMap.java | 11 ++++++-----
 .../metadata/utils/StaticDataPartitioningProvider.java      | 13 +++++++------
 2 files changed, 13 insertions(+), 11 deletions(-)

diff --git 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/cluster/StorageComputePartitionsMap.java
 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/cluster/StorageComputePartitionsMap.java
index a16204da20..dc62cac667 100644
--- 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/cluster/StorageComputePartitionsMap.java
+++ 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/cluster/StorageComputePartitionsMap.java
@@ -22,6 +22,7 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -41,7 +42,7 @@ public class StorageComputePartitionsMap {
     }
 
     public int[][] getComputeToStorageMap(boolean metadataDataset) {
-        Map<Integer, List<Integer>> computeToStoragePartitions = new 
HashMap<>();
+        Map<Integer, List<Integer>> computeToStoragePartitions = new 
LinkedHashMap<>();
         if (metadataDataset) {
             final int computePartitionIdForMetadata = 0;
             computeToStoragePartitions.put(computePartitionIdForMetadata,
@@ -55,13 +56,13 @@ public class StorageComputePartitionsMap {
                 storagePartitions.add(i);
             }
         }
-        int[][] computerToStoArray = new 
int[computeToStoragePartitions.size()][];
+        int[][] computeToStoArray = new 
int[computeToStoragePartitions.size()][];
         int partitionIdx = 0;
-        for (Map.Entry<Integer, List<Integer>> integerListEntry : 
computeToStoragePartitions.entrySet()) {
-            computerToStoArray[partitionIdx] = 
integerListEntry.getValue().stream().mapToInt(i -> i).toArray();
+        for (Map.Entry<Integer, List<Integer>> computeToStoPartitions : 
computeToStoragePartitions.entrySet()) {
+            computeToStoArray[partitionIdx] = 
computeToStoPartitions.getValue().stream().mapToInt(i -> i).toArray();
             partitionIdx++;
         }
-        return computerToStoArray;
+        return computeToStoArray;
     }
 
     public int getStoragePartitionsCount() {
diff --git 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/StaticDataPartitioningProvider.java
 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/StaticDataPartitioningProvider.java
index dbdcdc2d05..ffcdc57929 100644
--- 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/StaticDataPartitioningProvider.java
+++ 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/StaticDataPartitioningProvider.java
@@ -60,11 +60,11 @@ public class StaticDataPartitioningProvider extends 
DataPartitioningProvider {
     @Override
     public PartitioningProperties 
getPartitioningProperties(MetadataTransactionContext mdTxnCtx, Dataset ds,
             String indexName) throws AlgebricksException {
-        SplitComputeLocations dataverseSplits = getDatasetSplits(ds, 
indexName);
+        SplitComputeLocations datasetSplits = getDatasetSplits(ds, indexName);
         StorageComputePartitionsMap partitionMap = 
clusterStateManager.getStorageComputeMap();
         int[][] partitionsMap = partitionMap
                 
.getComputeToStorageMap(MetadataIndexImmutableProperties.isMetadataDataset(ds.getDatasetId()));
-        return PartitioningProperties.of(dataverseSplits.getSplitsProvider(), 
dataverseSplits.getConstraints(),
+        return PartitioningProperties.of(datasetSplits.getSplitsProvider(), 
datasetSplits.getConstraints(),
                 partitionsMap);
     }
 
@@ -94,19 +94,20 @@ public class StaticDataPartitioningProvider extends 
DataPartitioningProvider {
         List<String> locations = new ArrayList<>();
         Set<Integer> uniqueLocations = new HashSet<>();
         StorageComputePartitionsMap partitionMap = 
clusterStateManager.getStorageComputeMap();
-        final int datasetPartitons = getNumberOfPartitions(dataset);
+        final int datasetPartitions = getNumberOfPartitions(dataset);
         boolean metadataDataset = 
MetadataIndexImmutableProperties.isMetadataDataset(dataset.getDatasetId());
-        for (int i = 0; i < datasetPartitons; i++) {
+        for (int i = 0; i < datasetPartitions; i++) {
             int storagePartition = metadataDataset ? 
StorageConstants.METADATA_PARTITION : i;
             final String relPath = 
StoragePathUtil.prepareDataverseIndexName(dataset.getDataverseName(),
                     dataset.getDatasetName(), indexName, 
dataset.getRebalanceCount());
             File f = new 
File(StoragePathUtil.prepareStoragePartitionPath(storagePartition), relPath);
             ComputePartition computePartition = 
partitionMap.getComputePartition(storagePartition);
             splits.add(new MappedFileSplit(computePartition.getNodeId(), 
f.getPath(), 0));
-            if (!uniqueLocations.contains(computePartition.getId())) {
+            int computePartitionId = computePartition.getId();
+            if (!uniqueLocations.contains(computePartitionId)) {
                 locations.add(computePartition.getNodeId());
             }
-            uniqueLocations.add(computePartition.getId());
+            uniqueLocations.add(computePartitionId);
         }
         IFileSplitProvider splitProvider = 
StoragePathUtil.splitProvider(splits.toArray(new FileSplit[0]));
         AlgebricksPartitionConstraint constraints =

Reply via email to