Add sample accessing database service to Foo
Change-Id: I514c57a278dea368448d284eb5bf0d41bb0013e3
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DatabaseManager.java b/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DatabaseManager.java
index 2779b35..421f9cc 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DatabaseManager.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DatabaseManager.java
@@ -2,6 +2,7 @@
import static org.slf4j.LoggerFactory.getLogger;
+import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -57,7 +58,7 @@
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected DatabaseProtocolService copycatMessagingProtocol;
- public static final String LOG_FILE_PREFIX = "onos-copy-cat-log";
+ public static final String LOG_FILE_PREFIX = "/tmp/onos-copy-cat-log";
private Copycat copycat;
private DatabaseClient client;
@@ -126,9 +127,11 @@
StateMachine stateMachine = new DatabaseStateMachine();
- // FIXME resolve Chronicle + OSGi issue
+ // Chronicle + OSGi issue
//Log consensusLog = new ChronicleLog(LOG_FILE_PREFIX + "_" + thisNode.id());
- Log consensusLog = new KryoRegisteredInMemoryLog();
+ //Log consensusLog = new KryoRegisteredInMemoryLog();
+ Log consensusLog = new MapDBLog(new File(LOG_FILE_PREFIX + localNode.id()),
+ ClusterMessagingProtocol.SERIALIZER);
copycat = new Copycat(stateMachine, consensusLog, cluster, copycatMessagingProtocol);
copycat.start();
@@ -187,8 +190,14 @@
}
@Override
- public WriteResult write(WriteRequest request) {
- return batchWrite(Arrays.asList(request)).get(0).get();
+ public OptionalResult<WriteResult, DatabaseException> writeNothrow(WriteRequest request) {
+ return batchWrite(Arrays.asList(request)).get(0);
+ }
+
+ @Override
+ public WriteResult write(WriteRequest request)
+ throws OptimisticLockException, PreconditionFailedException {
+ return writeNothrow(request).get();
}
@Override
@@ -199,13 +208,13 @@
if (internalWriteResult.status() == InternalWriteResult.Status.NO_SUCH_TABLE) {
writeResults.add(new DatabaseOperationResult<WriteResult, DatabaseException>(
new NoSuchTableException()));
- } else if (internalWriteResult.status() == InternalWriteResult.Status.OPTIMISTIC_LOCK_FAILURE) {
+ } else if (internalWriteResult.status() == InternalWriteResult.Status.PREVIOUS_VERSION_MISMATCH) {
writeResults.add(new DatabaseOperationResult<WriteResult, DatabaseException>(
new OptimisticLockException()));
} else if (internalWriteResult.status() == InternalWriteResult.Status.PREVIOUS_VALUE_MISMATCH) {
// TODO: throw a different exception?
writeResults.add(new DatabaseOperationResult<WriteResult, DatabaseException>(
- new PreconditionFailedException()));
+ new OptimisticLockException()));
} else if (internalWriteResult.status() == InternalWriteResult.Status.ABORTED) {
writeResults.add(new DatabaseOperationResult<WriteResult, DatabaseException>(
new WriteAborted()));