Michael Blow has uploaded this change for review. ( 
https://asterix-gerrit.ics.uci.edu/3467


Change subject: DO NOT MERGE: combo patch of forced greedy, concurrent merge 
policy
......................................................................

DO NOT MERGE: combo patch of forced greedy, concurrent merge policy

Change-Id: I5908f953a18dc98b92bc38cc498b20357f288a72
---
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/io/PersistedResourceRegistry.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java
M asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
M 
asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/StorageConstants.java
M 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
5 files changed, 20 insertions(+), 9 deletions(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/67/3467/1

diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/io/PersistedResourceRegistry.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/io/PersistedResourceRegistry.java
index 894dc18..a606cd8 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/io/PersistedResourceRegistry.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/io/PersistedResourceRegistry.java
@@ -102,6 +102,7 @@
 import 
org.apache.hyracks.storage.am.lsm.btree.dataflow.ExternalBTreeLocalResource;
 import 
org.apache.hyracks.storage.am.lsm.btree.dataflow.ExternalBTreeWithBuddyLocalResource;
 import org.apache.hyracks.storage.am.lsm.btree.dataflow.LSMBTreeLocalResource;
+import 
org.apache.hyracks.storage.am.lsm.common.impls.ConcurrentMergePolicyFactory;
 import 
org.apache.hyracks.storage.am.lsm.common.impls.ConstantMergePolicyFactory;
 import org.apache.hyracks.storage.am.lsm.common.impls.NoMergePolicyFactory;
 import 
org.apache.hyracks.storage.am.lsm.common.impls.NoOpIOOperationCallbackFactory;
@@ -158,6 +159,7 @@
         // ILSMMergePolicyFactory
         REGISTERED_CLASSES.put("NoMergePolicyFactory", 
NoMergePolicyFactory.class);
         REGISTERED_CLASSES.put("PrefixMergePolicyFactory", 
PrefixMergePolicyFactory.class);
+        REGISTERED_CLASSES.put("ConcurrentMergePolicyFactory", 
ConcurrentMergePolicyFactory.class);
         REGISTERED_CLASSES.put("ConstantMergePolicyFactory", 
ConstantMergePolicyFactory.class);
         REGISTERED_CLASSES.put("CorrelatedPrefixMergePolicyFactory", 
CorrelatedPrefixMergePolicyFactory.class);

diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java
index 8cf114c..988751e 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java
@@ -92,8 +92,8 @@
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationScheduler;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMMergePolicyFactory;
 import org.apache.hyracks.storage.am.lsm.common.impls.AsynchronousScheduler;
+import 
org.apache.hyracks.storage.am.lsm.common.impls.ConcurrentMergePolicyFactory;
 import org.apache.hyracks.storage.am.lsm.common.impls.GreedyScheduler;
-import org.apache.hyracks.storage.am.lsm.common.impls.PrefixMergePolicyFactory;
 import org.apache.hyracks.storage.common.ILocalResourceRepository;
 import org.apache.hyracks.storage.common.buffercache.BufferCache;
 import 
org.apache.hyracks.storage.common.buffercache.ClockPageReplacementStrategy;
@@ -196,7 +196,7 @@
             throw new IllegalStateException("Unknown storage I/O scheduler: " 
+ schedulerName + ", options are "
                     + AsynchronousScheduler.FACTORY.getName() + ", " + 
GreedyScheduler.FACTORY.getName());
         }
-        metadataMergePolicyFactory = new PrefixMergePolicyFactory();
+        metadataMergePolicyFactory = new ConcurrentMergePolicyFactory();
         indexCheckpointManagerProvider = new 
IndexCheckpointManagerProvider(ioManager);
         ILocalResourceRepositoryFactory 
persistentLocalResourceRepositoryFactory =
                 new PersistentLocalResourceRepositoryFactory(ioManager, 
indexCheckpointManagerProvider,
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml 
b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
index 282c03a..028a313 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
@@ -3594,6 +3594,11 @@
       </compilation-unit>
     </test-case>
     <test-case FilePath="dml">
+      <compilation-unit name="using-concurrent-merge-policy">
+        <output-dir compare="Text">using-concurrent-merge-policy</output-dir>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="dml">
       <compilation-unit name="using-correlated-prefix-merge-policy">
         <output-dir 
compare="Text">using-correlated-prefix-merge-policy</output-dir>
       </compilation-unit>
diff --git 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/StorageConstants.java
 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/StorageConstants.java
index d2443e1..0207e21 100644
--- 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/StorageConstants.java
+++ 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/StorageConstants.java
@@ -23,6 +23,7 @@

 import org.apache.hyracks.storage.am.common.api.ITreeIndexFrame;
 import 
org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndexFileManager;
+import 
org.apache.hyracks.storage.am.lsm.common.impls.ConcurrentMergePolicyFactory;

 /**
  * A static class that stores storage constants
@@ -41,7 +42,7 @@
     public static final String MASK_FILE_PREFIX = ".mask_";
     public static final String COMPONENT_MASK_FILE_PREFIX = MASK_FILE_PREFIX + 
"C_";
     public static final float DEFAULT_TREE_FILL_FACTOR = 1.00f;
-    public static final String DEFAULT_COMPACTION_POLICY_NAME = "prefix";
+    public static final String DEFAULT_COMPACTION_POLICY_NAME = "concurrent";
     public static final String DEFAULT_FILTERED_DATASET_COMPACTION_POLICY_NAME 
= "correlated-prefix";
     public static final Map<String, String> 
DEFAULT_COMPACTION_POLICY_PROPERTIES;

@@ -57,10 +58,12 @@

     static {
         DEFAULT_COMPACTION_POLICY_PROPERTIES = new LinkedHashMap<>();
-        
DEFAULT_COMPACTION_POLICY_PROPERTIES.put("max-mergable-component-size", 
"1073741824"); // 1GB
-        
DEFAULT_COMPACTION_POLICY_PROPERTIES.put("max-tolerance-component-count", "5"); 
// 5 components
+        
DEFAULT_COMPACTION_POLICY_PROPERTIES.put(ConcurrentMergePolicyFactory.MAX_COMPONENT_COUNT,
 "30");
+        
DEFAULT_COMPACTION_POLICY_PROPERTIES.put(ConcurrentMergePolicyFactory.MIN_MERGE_COMPONENT_COUNT,
 "3");
+        
DEFAULT_COMPACTION_POLICY_PROPERTIES.put(ConcurrentMergePolicyFactory.MAX_MERGE_COMPONENT_COUNT,
 "10");
+        
DEFAULT_COMPACTION_POLICY_PROPERTIES.put(ConcurrentMergePolicyFactory.SIZE_RATIO,
 "1.2");
     }

     private StorageConstants() {
     }
-}
\ No newline at end of file
+}
diff --git 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
index 1ce9002..f0d0efe 100644
--- 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
+++ 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
@@ -82,6 +82,7 @@
 import 
org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallbackFactory;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMMergePolicyFactory;
 import 
org.apache.hyracks.storage.am.lsm.common.api.ILSMOperationTrackerFactory;
+import 
org.apache.hyracks.storage.am.lsm.common.impls.ConcurrentMergePolicyFactory;
 import 
org.apache.hyracks.storage.am.lsm.common.impls.ConstantMergePolicyFactory;
 import org.apache.hyracks.storage.am.lsm.common.impls.NoMergePolicyFactory;
 import org.apache.hyracks.storage.am.lsm.common.impls.PrefixMergePolicyFactory;
@@ -263,9 +264,9 @@

     private static void 
insertInitialCompactionPolicies(MetadataTransactionContext mdTxnCtx)
             throws AlgebricksException {
-        String[] builtInCompactionPolicyClassNames =
-                new String[] { ConstantMergePolicyFactory.class.getName(), 
PrefixMergePolicyFactory.class.getName(),
-                        NoMergePolicyFactory.class.getName(), 
CorrelatedPrefixMergePolicyFactory.class.getName() };
+        String[] builtInCompactionPolicyClassNames = new String[] { 
ConstantMergePolicyFactory.class.getName(),
+                PrefixMergePolicyFactory.class.getName(), 
ConcurrentMergePolicyFactory.class.getName(),
+                NoMergePolicyFactory.class.getName(), 
CorrelatedPrefixMergePolicyFactory.class.getName() };
         for (String policyClassName : builtInCompactionPolicyClassNames) {
             CompactionPolicy compactionPolicy = 
getCompactionPolicyEntity(policyClassName);
             MetadataManager.INSTANCE.addCompactionPolicy(mdTxnCtx, 
compactionPolicy);

--
To view, visit https://asterix-gerrit.ics.uci.edu/3467
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I5908f953a18dc98b92bc38cc498b20357f288a72
Gerrit-Change-Number: 3467
Gerrit-PatchSet: 1
Gerrit-Owner: Michael Blow <[email protected]>

Reply via email to