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]>