Murtadha Hubail has uploaded a new change for review.

  https://asterix-gerrit.ics.uci.edu/1529

Change subject: Exceptions Cleanup for Replication/FaultTolerance Strategies
......................................................................

Exceptions Cleanup for Replication/FaultTolerance Strategies

Change-Id: I8f28b8db42bf7c8537ff2da22cbd2a97e243f32f
---
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/RecoveryManager.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/replication/MetadataNodeFaultToleranceStrategy.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/replication/NoFaultToleranceStrategy.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/util/FaultToleranceUtil.java
M 
asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
M 
asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ClusterProperties.java
M 
asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ReplicationProperties.java
M 
asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java
M 
asterixdb/asterix-common/src/main/java/org/apache/asterix/common/replication/ChainedDeclusteringReplicationStrategy.java
M 
asterixdb/asterix-common/src/main/java/org/apache/asterix/common/replication/IReplicationStrategy.java
M 
asterixdb/asterix-common/src/main/java/org/apache/asterix/common/replication/MetadataOnlyReplicationStrategy.java
M 
asterixdb/asterix-common/src/main/java/org/apache/asterix/common/replication/ReplicationStrategyFactory.java
M 
asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/IRecoveryManager.java
M asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
M 
asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/test/MetadataReplicationIT.java
15 files changed, 76 insertions(+), 31 deletions(-)


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

diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/RecoveryManager.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/RecoveryManager.java
index 2efb139..8549a34 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/RecoveryManager.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/RecoveryManager.java
@@ -182,7 +182,9 @@
     @Override
     public void startLocalRecovery(Set<Integer> partitions) throws 
IOException, ACIDException {
         state = SystemState.RECOVERING;
-        LOGGER.log(Level.INFO, "starting recovery ...");
+        if (LOGGER.isLoggable(Level.INFO)) {
+            LOGGER.info("starting recovery ...");
+        }
 
         long readableSmallestLSN = logMgr.getReadableSmallestLSN();
         Checkpoint checkpointObject = checkpointManager.getLatest();
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/replication/MetadataNodeFaultToleranceStrategy.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/replication/MetadataNodeFaultToleranceStrategy.java
index e6638e8..21f1670 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/replication/MetadataNodeFaultToleranceStrategy.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/replication/MetadataNodeFaultToleranceStrategy.java
@@ -46,7 +46,9 @@
 import org.apache.asterix.common.api.INCLifecycleTask;
 import org.apache.asterix.common.cluster.ClusterPartition;
 import org.apache.asterix.common.cluster.IClusterStateManager;
+import org.apache.asterix.common.exceptions.ErrorCode;
 import org.apache.asterix.common.exceptions.ExceptionUtils;
+import org.apache.asterix.common.exceptions.RuntimeDataException;
 import org.apache.asterix.common.messaging.api.ICCMessageBroker;
 import org.apache.asterix.common.replication.IFaultToleranceStrategy;
 import org.apache.asterix.common.replication.INCLifecycleMessage;
@@ -129,7 +131,7 @@
                 process((ReplayPartitionLogsResponseMessage) message);
                 break;
             default:
-                throw new HyracksDataException("Unsupported message type: " + 
message.getType().name());
+                throw new 
RuntimeDataException(ErrorCode.UNSUPPORTED_MESSAGE_TYPE, 
message.getType().name());
         }
     }
 
@@ -141,7 +143,9 @@
 
     private synchronized void process(ReplayPartitionLogsResponseMessage msg) {
         hotStandbyMetadataReplica.add(msg.getNodeId());
-        LOGGER.log(Level.INFO, "Hot Standby Metadata Replicas: " + 
hotStandbyMetadataReplica);
+        if (LOGGER.isLoggable(Level.INFO)) {
+            LOGGER.info("Hot Standby Metadata Replicas: " + 
hotStandbyMetadataReplica);
+        }
     }
 
     private synchronized void process(StartupTaskRequestMessage msg) throws 
HyracksDataException {
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/replication/NoFaultToleranceStrategy.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/replication/NoFaultToleranceStrategy.java
index 0ee4f6a..51defaa 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/replication/NoFaultToleranceStrategy.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/replication/NoFaultToleranceStrategy.java
@@ -40,7 +40,9 @@
 import org.apache.asterix.common.api.INCLifecycleTask;
 import org.apache.asterix.common.cluster.ClusterPartition;
 import org.apache.asterix.common.cluster.IClusterStateManager;
+import org.apache.asterix.common.exceptions.ErrorCode;
 import org.apache.asterix.common.exceptions.ExceptionUtils;
+import org.apache.asterix.common.exceptions.RuntimeDataException;
 import org.apache.asterix.common.messaging.api.ICCMessageBroker;
 import org.apache.asterix.common.replication.IFaultToleranceStrategy;
 import org.apache.asterix.common.replication.INCLifecycleMessage;
@@ -81,7 +83,7 @@
                 process((NCLifecycleTaskReportMessage) message);
                 break;
             default:
-                throw new HyracksDataException("Unsupported message type: " + 
message.getType().name());
+                throw new 
RuntimeDataException(ErrorCode.UNSUPPORTED_MESSAGE_TYPE, 
message.getType().name());
         }
     }
 
@@ -118,7 +120,9 @@
             }
             clusterManager.refreshState();
         } else {
-            LOGGER.log(Level.SEVERE, msg.getNodeId() + " failed to complete 
startup. ", msg.getException());
+            if (LOGGER.isLoggable(Level.SEVERE)) {
+                LOGGER.log(Level.SEVERE, msg.getNodeId() + " failed to 
complete startup. ", msg.getException());
+            }
         }
     }
 
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/util/FaultToleranceUtil.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/util/FaultToleranceUtil.java
index 0a9a215..0ab4e54 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/util/FaultToleranceUtil.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/util/FaultToleranceUtil.java
@@ -59,7 +59,9 @@
                 try {
                     messageBroker.sendApplicationMessageToNC(msg, replica);
                 } catch (Exception e) {
-                    LOGGER.log(Level.WARNING, "Failed sending an application 
message to an NC", e);
+                    if (LOGGER.isLoggable(Level.WARNING)) {
+                        LOGGER.log(Level.WARNING, "Failed sending an 
application message to an NC", e);
+                    }
                 }
             }
         }
diff --git 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
index f5d97ba..ae40827 100644
--- 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
+++ 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
@@ -59,6 +59,7 @@
 import org.apache.asterix.testframework.context.TestFileContext;
 import org.apache.asterix.testframework.xml.TestCase.CompilationUnit;
 import org.apache.asterix.testframework.xml.TestGroup;
+import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.io.output.ByteArrayOutputStream;
 import org.apache.commons.lang3.StringUtils;
@@ -1119,8 +1120,7 @@
         String config = actual.toString();
         ObjectMapper om = new ObjectMapper();
         String logDir = 
om.readTree(config).findPath("transaction.log.dirs").get(nodeId).asText();
-        ProcessBuilder pb = new ProcessBuilder("rm", "-rf", logDir);
-        pb.start().waitFor();
+        FileUtils.deleteQuietly(new File(logDir));
     }
 
     public void executeTest(String actualPath, TestCaseContext testCaseCtx, 
ProcessBuilder pb,
diff --git 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ClusterProperties.java
 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ClusterProperties.java
index 980ad24..1ba9471 100644
--- 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ClusterProperties.java
+++ 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ClusterProperties.java
@@ -32,6 +32,7 @@
 import org.apache.asterix.event.schema.cluster.Node;
 import org.apache.asterix.event.schema.cluster.Replica;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public class ClusterProperties {
 
@@ -83,7 +84,7 @@
         return -1;
     }
 
-    public IReplicationStrategy getReplicationStrategy() {
+    public IReplicationStrategy getReplicationStrategy() throws 
HyracksDataException {
         return ReplicationStrategyFactory.create(cluster);
     }
 
diff --git 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ReplicationProperties.java
 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ReplicationProperties.java
index cf2ce4f..116609e 100644
--- 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ReplicationProperties.java
+++ 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ReplicationProperties.java
@@ -25,6 +25,7 @@
 import org.apache.asterix.common.replication.Replica;
 import org.apache.asterix.event.schema.cluster.Cluster;
 import org.apache.asterix.event.schema.cluster.Node;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.util.StorageUtil;
 import org.apache.hyracks.util.StorageUtil.StorageUnit;
 
@@ -54,7 +55,7 @@
     private final Cluster cluster;
     private final IReplicationStrategy repStrategy;
 
-    public ReplicationProperties(PropertiesAccessor accessor) {
+    public ReplicationProperties(PropertiesAccessor accessor) throws 
HyracksDataException {
         super(accessor);
         this.cluster = ClusterProperties.INSTANCE.getCluster();
         this.repStrategy = ClusterProperties.INSTANCE.getReplicationStrategy();
diff --git 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java
 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java
index 83ff3a2..1221955 100644
--- 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java
+++ 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java
@@ -18,7 +18,6 @@
  */
 package org.apache.asterix.common.exceptions;
 
-import java.io.File;
 import java.io.InputStream;
 import java.util.Map;
 
@@ -37,6 +36,9 @@
     // Extension errors
     public static final int EXTENSION_ID_CONFLICT = 4001;
     public static final int EXTENSION_COMPONENT_CONFLICT = 4002;
+    public static final int UNSUPPORTED_MESSAGE_TYPE = 4003;
+    public static final int INVALID_CONFIGURATION = 4004;
+    public static final int UNSUPPORTED_REPLICATION_STRATEGY = 4005;
 
     // Runtime errors
     public static final int CASTING_FIELD = 1;
@@ -52,6 +54,7 @@
     public static final int OUT_OF_BOUND = 11;
     public static final int COERCION = 12;
     public static final int DUPLICATE_FIELD_NAME = 13;
+    public static final int INITIALIZATION_ERROR = 14;
 
     // Compilation errors
     public static final int PARSE_ERROR = 1001;
diff --git 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/replication/ChainedDeclusteringReplicationStrategy.java
 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/replication/ChainedDeclusteringReplicationStrategy.java
index ad326b2..dc69383 100644
--- 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/replication/ChainedDeclusteringReplicationStrategy.java
+++ 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/replication/ChainedDeclusteringReplicationStrategy.java
@@ -25,7 +25,10 @@
 import java.util.logging.Logger;
 
 import org.apache.asterix.common.config.ClusterProperties;
+import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.common.exceptions.RuntimeDataException;
 import org.apache.asterix.event.schema.cluster.Cluster;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public class ChainedDeclusteringReplicationStrategy implements 
IReplicationStrategy {
 
@@ -45,7 +48,9 @@
         int nodeIndex = ClusterProperties.INSTANCE.getNodeIndex(nodeId);
 
         if (nodeIndex == -1) {
-            LOGGER.log(Level.WARNING, "Could not find node " + nodeId + " in 
cluster configurations");
+            if (LOGGER.isLoggable(Level.WARNING)) {
+                LOGGER.warning("Could not find node " + nodeId + " in cluster 
configurations");
+            }
             return Collections.emptySet();
         }
 
@@ -74,9 +79,9 @@
     }
 
     @Override
-    public ChainedDeclusteringReplicationStrategy from(Cluster cluster) {
+    public ChainedDeclusteringReplicationStrategy from(Cluster cluster) throws 
HyracksDataException {
         if 
(cluster.getHighAvailability().getDataReplication().getReplicationFactor() == 
null) {
-            throw new IllegalStateException("Replication factor must be 
specified.");
+            throw new RuntimeDataException(ErrorCode.INVALID_CONFIGURATION, 
"Replication factor must be specified.");
         }
         ChainedDeclusteringReplicationStrategy cd = new 
ChainedDeclusteringReplicationStrategy();
         cd.replicationFactor = 
cluster.getHighAvailability().getDataReplication().getReplicationFactor().intValue();
diff --git 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/replication/IReplicationStrategy.java
 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/replication/IReplicationStrategy.java
index f65f6ac..b3f1701 100644
--- 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/replication/IReplicationStrategy.java
+++ 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/replication/IReplicationStrategy.java
@@ -21,6 +21,7 @@
 import java.util.Set;
 
 import org.apache.asterix.event.schema.cluster.Cluster;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public interface IReplicationStrategy {
 
@@ -54,5 +55,5 @@
      * @param cluster
      * @return A replication strategy based on the passed configurations.
      */
-    IReplicationStrategy from(Cluster cluster);
+    IReplicationStrategy from(Cluster cluster) throws HyracksDataException;
 }
diff --git 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/replication/MetadataOnlyReplicationStrategy.java
 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/replication/MetadataOnlyReplicationStrategy.java
index 711f06d..6682489 100644
--- 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/replication/MetadataOnlyReplicationStrategy.java
+++ 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/replication/MetadataOnlyReplicationStrategy.java
@@ -24,9 +24,12 @@
 import java.util.Set;
 
 import org.apache.asterix.common.config.ClusterProperties;
+import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.common.exceptions.RuntimeDataException;
 import org.apache.asterix.common.metadata.MetadataIndexImmutableProperties;
 import org.apache.asterix.event.schema.cluster.Cluster;
 import org.apache.asterix.event.schema.cluster.Node;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public class MetadataOnlyReplicationStrategy implements IReplicationStrategy {
 
@@ -57,9 +60,9 @@
     }
 
     @Override
-    public MetadataOnlyReplicationStrategy from(Cluster cluster) {
+    public MetadataOnlyReplicationStrategy from(Cluster cluster) throws 
HyracksDataException {
         if (cluster.getMetadataNode() == null) {
-            throw new IllegalStateException("Metadata node must be 
specified.");
+            throw new RuntimeDataException(ErrorCode.INVALID_CONFIGURATION, 
"Metadata node must be specified.");
         }
 
         Node metadataNode = 
ClusterProperties.INSTANCE.getNodeById(cluster.getMetadataNode());
@@ -70,14 +73,14 @@
         if (cluster.getHighAvailability().getFaultTolerance().getReplica() == 
null
                 || 
cluster.getHighAvailability().getFaultTolerance().getReplica().getNodeId() == 
null
                 || 
cluster.getHighAvailability().getFaultTolerance().getReplica().getNodeId().isEmpty())
 {
-            throw new IllegalStateException("One or more replicas must be 
specified for metadata node.");
+            throw new RuntimeDataException(ErrorCode.INVALID_CONFIGURATION, 
"One or more replicas must be specified for metadata node.");
         }
 
         final Set<Replica> replicas = new HashSet<>();
         for (String nodeId : 
cluster.getHighAvailability().getFaultTolerance().getReplica().getNodeId()) {
             Node node = ClusterProperties.INSTANCE.getNodeById(nodeId);
             if (node == null) {
-                throw new IllegalStateException("Invalid replica specified: " 
+ nodeId);
+                throw new 
RuntimeDataException(ErrorCode.INVALID_CONFIGURATION, "Invalid replica 
specified: " + nodeId);
             }
             replicas.add(new Replica(node));
         }
diff --git 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/replication/ReplicationStrategyFactory.java
 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/replication/ReplicationStrategyFactory.java
index b61b38a..4794e37 100644
--- 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/replication/ReplicationStrategyFactory.java
+++ 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/replication/ReplicationStrategyFactory.java
@@ -21,7 +21,10 @@
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.common.exceptions.RuntimeDataException;
 import org.apache.asterix.event.schema.cluster.Cluster;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public class ReplicationStrategyFactory {
 
@@ -38,7 +41,7 @@
         throw new AssertionError();
     }
 
-    public static IReplicationStrategy create(Cluster cluster) {
+    public static IReplicationStrategy create(Cluster cluster) throws 
HyracksDataException {
         boolean highAvailabilityEnabled = cluster.getHighAvailability() != null
                 && cluster.getHighAvailability().getEnabled() != null
                 && Boolean.valueOf(cluster.getHighAvailability().getEnabled());
@@ -49,14 +52,15 @@
         }
         String strategyName = 
cluster.getHighAvailability().getDataReplication().getStrategy().toLowerCase();
         if (!BUILT_IN_REPLICATION_STRATEGY.containsKey(strategyName)) {
-            throw new IllegalArgumentException(String.format("Unsupported 
Replication Strategy. Available types: %s",
-                    BUILT_IN_REPLICATION_STRATEGY.keySet().toString()));
+            throw new 
RuntimeDataException(ErrorCode.UNSUPPORTED_REPLICATION_STRATEGY,
+                    String.format(strategyName + ". Available strategies: %s",
+                            
BUILT_IN_REPLICATION_STRATEGY.keySet().toString()));
         }
         Class<? extends IReplicationStrategy> clazz = 
BUILT_IN_REPLICATION_STRATEGY.get(strategyName);
         try {
             return clazz.newInstance().from(cluster);
         } catch (InstantiationException | IllegalAccessException e) {
-            throw new IllegalStateException(e);
+            throw new RuntimeDataException(ErrorCode.INITIALIZATION_ERROR, e);
         }
     }
 }
\ No newline at end of file
diff --git 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/IRecoveryManager.java
 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/IRecoveryManager.java
index 3e85276..52144d2e 100644
--- 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/IRecoveryManager.java
+++ 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/IRecoveryManager.java
@@ -34,11 +34,11 @@
 public interface IRecoveryManager {
 
     public enum SystemState {
-        INITIAL_RUN,
-        NEW_UNIVERSE,
-        RECOVERING,
-        HEALTHY,
-        CORRUPTED
+        INITIAL_RUN, // The first time the NC is bootstrapped.
+        NEW_UNIVERSE, // No checkpoint files found on NC and it is not the 
INITIAL_RUN (data loss).
+        RECOVERING, // Recovery process is on-going.
+        HEALTHY, // All txn logs effects are on disk (no need to perform 
recovery).
+        CORRUPTED // Some txn logs need to be replayed (need to perform 
recover).
     }
 
     public class ResourceType {
@@ -99,7 +99,6 @@
      *
      * @param partitions
      * @param lowWaterMarkLSN
-     * @param failedNode
      * @throws IOException
      * @throws ACIDException
      */
@@ -122,5 +121,12 @@
      */
     public void deleteRecoveryTemporaryFiles();
 
+    /**
+     * Performs the local recovery process on {@code partitions}
+     *
+     * @param partitions
+     * @throws IOException
+     * @throws ACIDException
+     */
     void startLocalRecovery(Set<Integer> partitions) throws IOException, 
ACIDException;
 }
diff --git 
a/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties 
b/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
index 3e96972..95e9e1c 100644
--- a/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
+++ b/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
@@ -27,6 +27,9 @@
 # For the extension lifecycle
 4001 = Two Extensions share the same Id: %1$s
 4002 = Extension Conflict between %1$s and %2$s both extensions extend %3$s
+4003 = Unsupported message type: %1$s
+4004 = Invalid configuration: %1$s
+4005 = Unsupported replication strategy %1$s
 
 # Type errors
 2,1002 = Type mismatch: function %1$s expects its %2$s input parameter to be 
type %3$s, but the actual input type is %4$s
@@ -44,6 +47,9 @@
 10 = Invalid value: function %1$s expects its %2$s input parameter to be a 
non-negative value, but gets %3$s
 11 = Index out of bound in %1$s: %2$s
 12 = Invalid implicit scalar to collection coercion in %1$s
+
+# Initialization errors
+14 = Initialization error
 
 # Compile-time check errors
 1007 = Invalid expression: function %1$s expects its %2$s input parameter to 
be a %3$s expression, but the actual expression is %4$s
@@ -142,4 +148,4 @@
 3075 = Closed field %1$s has null value.
 3076 = %1$s: no files found
 3077 = %1$s: path not found
-3078 = Cannot obtain hdfs scheduler
+3078 = Cannot obtain hdfs scheduler
\ No newline at end of file
diff --git 
a/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/test/MetadataReplicationIT.java
 
b/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/test/MetadataReplicationIT.java
index 2db6114..7a0a797 100644
--- 
a/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/test/MetadataReplicationIT.java
+++ 
b/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/test/MetadataReplicationIT.java
@@ -19,6 +19,7 @@
 package org.apache.asterix.installer.test;
 
 import java.io.File;
+import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Map;
@@ -41,7 +42,9 @@
 @RunWith(Parameterized.class)
 public class MetadataReplicationIT {
 
-    private static final String PATH_BASE = 
"src/test/resources/integrationts/metadata_only_replication/";
+    private static final String PATH_BASE =
+            Paths.get("src", "test", "resources", "integrationts", 
"metadata_only_replication").toString()
+                    + File.separator;
     private static final String PATH_ACTUAL = "target" + File.separator + 
"ittest" + File.separator;
     private static final Logger LOGGER = 
Logger.getLogger(MetadataReplicationIT.class.getName());
     private static String reportPath = new File(

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8f28b8db42bf7c8537ff2da22cbd2a97e243f32f
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <[email protected]>

Reply via email to