>From Ali Alsuliman <[email protected]>:

Ali Alsuliman has submitted this change. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17431 )

Change subject: [NO ISSUE][*DB] Create SAMPLE indexes after secondary indexes
......................................................................

[NO ISSUE][*DB] Create SAMPLE indexes after secondary indexes

- user model changes: no
- storage format changes: no
- interface changes: no

Change-Id: I42e9ad0b13d6e785d603561387150e975ef1b50f
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17431
Reviewed-by: Murtadha Hubail <[email protected]>
Tested-by: Jenkins <[email protected]>
Integration-Tests: Jenkins <[email protected]>
---
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java
M 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Index.java
2 files changed, 35 insertions(+), 4 deletions(-)

Approvals:
  Murtadha Hubail: Looks good to me, approved
  Jenkins: Verified; Verified

Objections:
  Anon. E. Moose #1000171: Violations found




diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java
index b0dc162..ba6c602 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java
@@ -28,6 +28,7 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.stream.Collectors;
 import java.util.stream.IntStream;

 import org.apache.asterix.active.IActiveEntityEventsListener;
@@ -371,10 +372,19 @@
     // Creates and loads all secondary indexes for the rebalance target 
dataset.
     private static void createAndLoadSecondaryIndexesForTarget(Dataset source, 
Dataset target,
             MetadataProvider metadataProvider, IHyracksClientConnection hcc) 
throws Exception {
-        for (Index index : 
metadataProvider.getDatasetIndexes(source.getDataverseName(), 
source.getDatasetName())) {
-            if (!index.isSecondaryIndex()) {
-                continue;
-            }
+        List<Index> indexes = 
metadataProvider.getDatasetIndexes(source.getDataverseName(), 
source.getDatasetName());
+        List<Index> secondaryIndexes = 
indexes.stream().filter(Index::isSecondaryIndex).collect(Collectors.toList());
+        List<Index> nonSampleIndexes =
+                secondaryIndexes.stream().filter(idx -> 
!idx.isSampleIndex()).collect(Collectors.toList());
+        List<Index> sampleIndexes = 
secondaryIndexes.stream().filter(Index::isSampleIndex).collect(Collectors.toList());
+        // must create all non samples secondary indexes first since samples 
need the stats of secondary indexes
+        createAndLoadIndexes(target, metadataProvider, hcc, nonSampleIndexes);
+        createAndLoadIndexes(target, metadataProvider, hcc, sampleIndexes);
+    }
+
+    private static void createAndLoadIndexes(Dataset target, MetadataProvider 
metadataProvider,
+            IHyracksClientConnection hcc, List<Index> indexes) throws 
Exception {
+        for (Index index : indexes) {
             // Creates the secondary index.
             JobSpecification indexCreationJobSpec =
                     IndexUtil.buildSecondaryIndexCreationJobSpec(target, 
index, metadataProvider, null);
diff --git 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Index.java
 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Index.java
index bbccd65..6b12bf8 100644
--- 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Index.java
+++ 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Index.java
@@ -138,6 +138,10 @@
         this.pendingOp = pendingOp;
     }

+    public boolean isSampleIndex() {
+        return indexType == IndexType.SAMPLE;
+    }
+
     public boolean isSecondaryIndex() {
         return !isPrimaryIndex();
     }

--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17431
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: neo
Gerrit-Change-Id: I42e9ad0b13d6e785d603561387150e975ef1b50f
Gerrit-Change-Number: 17431
Gerrit-PatchSet: 2
Gerrit-Owner: Ali Alsuliman <[email protected]>
Gerrit-Reviewer: Ali Alsuliman <[email protected]>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <[email protected]>
Gerrit-Reviewer: Michael Blow <[email protected]>
Gerrit-Reviewer: Murtadha Hubail <[email protected]>
Gerrit-MessageType: merged

Reply via email to