Update RAMCloud start-up procedure
This patch will enable RAMCloud coordinator failover and
server failover if number of replica is properly configured.
- Update onos.sh RAMCloud start-up procedure
- Use ZooKeeper to manage cluster member
- Specify cluster name, num replicas,...
- WARN: ramcloud.coordinator.ip is now a configuration to specify listen address
- Specify ZooKeeper address/ClusterName in RAMCloud client config (conf/ramcloud.conf)
- Note: conf/ramcloud.conf ramcloud.coordinatorIp, etc. is no longer used for connection
- Enable failure detector, which is required for fail-over feature
- Undocumented maintenance option "deldb" to remove:
- RAMCloud coordination info in ZK
- Note: ZooKeeper must be running in order to execute "./onos.sh rc-c deldb"
- BackupData file created by RAMCloud Storage Server
- Update RAMCloud Java bindings
- Expose API to specify RAMCloud ClusterName
- Expose ClientExeption
- Note: You need to run ./build-ramcloud-java-bindings.sh to update Java bindings
- Utility function to check if ZooKeeper is running
- Utility function to wait for ZooKeeper to start
- Modified kill-processes() to try killing process gracefully first then KILL
- Specify absolute path to pgrep/pkill
- Added "rc" to manipulate both server and coordinator
Change-Id: Ia8a282f81bf82810a4d000883611ce12f504bd16
diff --git a/src/main/java/edu/stanford/ramcloud/JRamCloud.java b/src/main/java/edu/stanford/ramcloud/JRamCloud.java
index 2bfd145..d7a1f63 100644
--- a/src/main/java/edu/stanford/ramcloud/JRamCloud.java
+++ b/src/main/java/edu/stanford/ramcloud/JRamCloud.java
@@ -278,9 +278,15 @@
* underlying RamCloud C++ object.
*/
public
+ JRamCloud(String coordinatorLocator, String clusterName)
+ {
+ ramcloudObjectPointer = connect(coordinatorLocator, clusterName);
+ }
+
+ public
JRamCloud(String coordinatorLocator)
{
- ramcloudObjectPointer = connect(coordinatorLocator);
+ this(coordinatorLocator, "main");
}
/**
@@ -389,7 +395,7 @@
return write(tableId, key.getBytes(StandardCharsets.UTF_8), value, rules);
}
- private static native long connect(String coordinatorLocator);
+ private static native long connect(String coordinatorLocator, String clusterName);
private static native void disconnect(long ramcloudObjectPointer);
public native long createTable(String name);
@@ -453,6 +459,13 @@
}
}
+ // TODO Define and support some of ClientException sub-classes.
+ public static class ClientException extends Exception {
+ public ClientException(String message) {
+ super(message);
+ }
+ }
+
public static void tableEnumeratorTest(JRamCloud ramcloud) {
long startTime = 0;
for (int x = 0 ; x < 2 ; x ++){