Merge branch 'gerrit/trinity' into 'master'
Change-Id: Iaa525ccf3067e52a0b6a645d50dd94006fa11d54
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSAllTablesDataGeneratorDatasource.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSAllTablesDataGeneratorDatasource.java
index 82303fc..430ba36 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSAllTablesDataGeneratorDatasource.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSAllTablesDataGeneratorDatasource.java
@@ -64,6 +64,6 @@
@Override
protected AlgebricksAbsolutePartitionConstraint getLocations(IClusterStateManager csm) {
- return new AlgebricksAbsolutePartitionConstraint(csm.getClusterLocations().getLocations());
+ return csm.getSortedClusterLocations();
}
}
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSSingleTableDataGeneratorDatasource.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSSingleTableDataGeneratorDatasource.java
index 458bff6..67319e3 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSSingleTableDataGeneratorDatasource.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSSingleTableDataGeneratorDatasource.java
@@ -68,6 +68,6 @@
@Override
protected AlgebricksAbsolutePartitionConstraint getLocations(IClusterStateManager csm) {
- return new AlgebricksAbsolutePartitionConstraint(csm.getClusterLocations().getLocations());
+ return csm.getSortedClusterLocations();
}
}
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/cluster/IClusterStateManager.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/cluster/IClusterStateManager.java
index 343a23d..ffa6c87 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/cluster/IClusterStateManager.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/cluster/IClusterStateManager.java
@@ -171,6 +171,11 @@
AlgebricksAbsolutePartitionConstraint getClusterLocations();
/**
+ * @return the constraint representing all the partitions of the cluster sorted by node name
+ */
+ AlgebricksAbsolutePartitionConstraint getSortedClusterLocations();
+
+ /**
* @param excludePendingRemoval true, if the desired set shouldn't have pending removal nodes
* @return the set of participant nodes
*/
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/abstracts/AbstractExternalInputStreamFactory.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/abstracts/AbstractExternalInputStreamFactory.java
index a1d5d0a..ac8859b 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/abstracts/AbstractExternalInputStreamFactory.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/abstracts/AbstractExternalInputStreamFactory.java
@@ -70,8 +70,8 @@
public void configure(IServiceContext ctx, Map<String, String> configuration, IWarningCollector warningCollector,
IExternalFilterEvaluatorFactory filterEvaluatorFactory) throws AlgebricksException, HyracksDataException {
this.configuration = configuration;
- this.partitionConstraint =
- ((ICcApplicationContext) ctx.getApplicationContext()).getClusterStateManager().getClusterLocations();
+ this.partitionConstraint = ((ICcApplicationContext) ctx.getApplicationContext()).getClusterStateManager()
+ .getSortedClusterLocations();
this.filterEvaluatorFactory = filterEvaluatorFactory;
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/HDFSUtils.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/HDFSUtils.java
index a11a8dd..e92448c 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/HDFSUtils.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/HDFSUtils.java
@@ -252,7 +252,7 @@
public static AlgebricksAbsolutePartitionConstraint getPartitionConstraints(IApplicationContext appCtx,
AlgebricksAbsolutePartitionConstraint clusterLocations) {
if (clusterLocations == null) {
- return ((ICcApplicationContext) appCtx).getClusterStateManager().getClusterLocations();
+ return ((ICcApplicationContext) appCtx).getClusterStateManager().getSortedClusterLocations();
}
return clusterLocations;
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/FunctionDataSource.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/FunctionDataSource.java
index e9b6111..f6aa347 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/FunctionDataSource.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/FunctionDataSource.java
@@ -20,9 +20,7 @@
import java.util.Arrays;
import java.util.Collections;
-import java.util.HashSet;
import java.util.List;
-import java.util.Set;
import org.apache.asterix.common.cluster.IClusterStateManager;
import org.apache.asterix.common.functions.FunctionSignature;
@@ -129,9 +127,9 @@
AlgebricksAbsolutePartitionConstraint locations);
protected AlgebricksAbsolutePartitionConstraint getLocations(IClusterStateManager csm) {
- String[] allPartitions = csm.getClusterLocations().getLocations();
- Set<String> ncs = new HashSet<>(Arrays.asList(allPartitions));
- return new AlgebricksAbsolutePartitionConstraint(ncs.toArray(new String[ncs.size()]));
+ String[] sortedLocations = csm.getSortedClusterLocations().getLocations();
+ return new AlgebricksAbsolutePartitionConstraint(
+ Arrays.stream(sortedLocations).distinct().toArray(String[]::new));
}
protected IDataParserFactory createDataParserFactory() {
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/ClusterStateManager.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/ClusterStateManager.java
index 4b36b20..0a10204 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/ClusterStateManager.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/ClusterStateManager.java
@@ -301,6 +301,13 @@
return clusterPartitionConstraint;
}
+ @Override
+ public synchronized AlgebricksAbsolutePartitionConstraint getSortedClusterLocations() {
+ String[] clone = getClusterLocations().getLocations().clone();
+ Arrays.sort(clone);
+ return new AlgebricksAbsolutePartitionConstraint(clone);
+ }
+
private synchronized void resetClusterPartitionConstraint() {
ArrayList<String> clusterActiveLocations = new ArrayList<>();
for (ClusterPartition p : clusterPartitions.values()) {