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/cpp/edu_stanford_ramcloud_JRamCloud.cc b/src/main/cpp/edu_stanford_ramcloud_JRamCloud.cc
index f6cfea7..4b2ecd4 100644
--- a/src/main/cpp/edu_stanford_ramcloud_JRamCloud.cc
+++ b/src/main/cpp/edu_stanford_ramcloud_JRamCloud.cc
@@ -21,6 +21,7 @@
* - Inner classes in JRamCloud.java should be moved out to be a separate
* stand alone class, to eliminate workaround 00024 signature in
* C methods.
+ * - Define and support some of ClientException sub-classes.
*
*/
@@ -223,22 +224,27 @@
} catch (InvalidObjectException& e) { \
createException(env, jRamCloud, "InvalidObjectException"); \
return _returnValue; \
+ } catch (ClientException& e) { \
+ createException(env, jRamCloud, "ClientException"); \
+ return _returnValue; \
}
/*
* Class: edu_stanford_ramcloud_JRamCloud
* Method: connect
- * Signature: (Ljava/lang/String;)J
+ * Signature: (Ljava/lang/String;Ljava/lang/String;)J
*/
JNIEXPORT jlong
JNICALL Java_edu_stanford_ramcloud_JRamCloud_connect(JNIEnv *env,
jclass jRamCloud,
- jstring coordinatorLocator)
+ jstring coordinatorLocator,
+ jstring clusterName)
{
JStringGetter locator(env, coordinatorLocator);
+ JStringGetter cluster(env, clusterName);
RamCloud* ramcloud = NULL;
try {
- ramcloud = new RamCloud(locator.string);
+ ramcloud = new RamCloud(locator.string, cluster.string);
} EXCEPTION_CATCHER((jlong)(NULL));
return reinterpret_cast<jlong>(ramcloud);
}