blob: 030d088a4893a192b3a1fbdc5af5ba975c8a77f1 [file] [log] [blame]
package com.tinkerpop.blueprints.impls.ramcloud;
import edu.stanford.ramcloud.JRamCloud;
import edu.stanford.ramcloud.JRamCloud.RejectRules;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class RamCloudWrite {
public enum PerfMonEnum {
WRITE,
INDEXWRITE
}
private final static Logger log = LoggerFactory.getLogger(RamCloudGraph.class);
public static boolean writeWithRules(long tableId, byte[] rcKey, byte[] rcValue, long expectedVersion, RamCloudGraph graph, PerfMonEnum perfMonKind) {
JRamCloud.RejectRules rules = new RejectRules();
if (expectedVersion == 0) {
rules.rejectIfExists();
} else {
rules.rejectIfNeVersion(expectedVersion);
}
PerfMon pm = PerfMon.getInstance();
try {
JRamCloud rcClient = graph.getRcClient();
if (perfMonKind.equals(PerfMonEnum.WRITE)) {
pm.write_start("RamCloudIndex writeWithRules()");
} else if (perfMonKind.equals(PerfMonEnum.INDEXWRITE)) {
pm.indexwrite_start("RamCloudIndex writeWithRules()");
}
rcClient.writeRule(tableId, rcKey, rcValue, rules);
if (perfMonKind.equals(PerfMonEnum.WRITE)) {
pm.write_end("RamCloudIndex writeWithRules()");
} else if (perfMonKind.equals(PerfMonEnum.INDEXWRITE)) {
pm.indexwrite_end("RamCloudIndex writeWithRules()");
}
} catch (Exception e) {
if (perfMonKind.equals(PerfMonEnum.WRITE)) {
pm.write_end("RamCloudIndex writeWithRules()");
pm.write_condfail("RamCloudIndex writeWithRules()");
log.debug("Cond. Write property: {} failed {} expected version: {}", RamCloudVertex.rcKeyToId(rcKey), e, expectedVersion);
} else if (perfMonKind.equals(PerfMonEnum.INDEXWRITE)) {
pm.indexwrite_end("RamCloudIndex writeWithRules()");
pm.indexwrite_condfail("RamCloudIndex writeWithRules()");
log.debug("Cond. Write index property: {} failed {} expected version: {}", RamCloudIndex.rcKeyToIndexName(rcKey), e, expectedVersion);
}
return false;
}
return true;
}
}