Merge "GUI -- tweaked couple of topo force layout parameters.  - made life-cycle callback parameters consistent; all now get - view (token), ctx, flags.  - updated module templates."
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/ClusterMessagingProtocolClient.java b/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/ClusterMessagingProtocolClient.java
index 61ec467..23c34b2 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/ClusterMessagingProtocolClient.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/ClusterMessagingProtocolClient.java
@@ -1,6 +1,8 @@
 package org.onlab.onos.store.service.impl;
 
+import static com.google.common.base.Verify.verifyNotNull;
 import static org.slf4j.LoggerFactory.getLogger;
+import static org.onlab.onos.store.service.impl.ClusterMessagingProtocol.SERIALIZER;
 
 import java.io.IOException;
 import java.util.concurrent.CompletableFuture;
@@ -122,7 +124,7 @@
                     new ClusterMessage(
                             localNode.id(),
                             messageType(request),
-                            ClusterMessagingProtocol.SERIALIZER.encode(request));
+                            verifyNotNull(SERIALIZER.encode(request)));
             this.future = future;
         }
 
@@ -132,7 +134,7 @@
                 byte[] response = clusterCommunicator
                     .sendAndReceive(message, remoteNode.id())
                     .get(RETRY_INTERVAL_MILLIS, TimeUnit.MILLISECONDS);
-                future.complete(ClusterMessagingProtocol.SERIALIZER.decode(response));
+                future.complete(verifyNotNull(SERIALIZER.decode(response)));
 
             } catch (IOException | InterruptedException | ExecutionException | TimeoutException e) {
                 log.warn("RPCTask for {} failed.", request, e);
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/MapDBLog.java b/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/MapDBLog.java
index 637a643..c2e3d8f 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/MapDBLog.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/MapDBLog.java
@@ -41,6 +41,8 @@
     private static final String LOG_NAME = "log";
     private static final String SIZE_FIELD_NAME = "size";
 
+    private int cacheSize = 256;
+
     public MapDBLog(String dbFileName, StoreSerializer serializer) {
         this.dbFile = new File(dbFileName);
         this.serializer = serializer;
@@ -50,6 +52,8 @@
     public void open() throws IOException {
         txMaker = DBMaker
                 .newFileDB(dbFile)
+                .cacheLRUEnable()
+                .cacheSize(cacheSize)
                 .makeTxMaker();
     }
 
@@ -95,7 +99,8 @@
                 long nextIndex = log.isEmpty() ? 1 : log.lastKey() + 1;
                 long addedBytes = 0;
                 for (Entry entry : entries) {
-                    byte[] entryBytes = serializer.encode(entry);
+                    byte[] entryBytes = verifyNotNull(serializer.encode(entry),
+                                                      "Writing LogEntry %s failed", nextIndex);
                     log.put(nextIndex, entryBytes);
                     addedBytes += entryBytes.length;
                     indices.add(nextIndex);
@@ -140,7 +145,7 @@
         DB db = txMaker.makeTx();
         try {
             BTreeMap<Long, byte[]> log = getLogMap(db);
-            return log.isEmpty() ? null : serializer.decode(log.firstEntry().getValue());
+            return log.isEmpty() ? null : verifyNotNull(serializer.decode(log.firstEntry().getValue()));
         } finally {
             db.close();
         }
@@ -173,7 +178,7 @@
             }
             List<T> entries = new ArrayList<>((int) (to - from + 1));
             for (long i = from; i <= to; i++) {
-                T entry = serializer.decode(log.get(i));
+                T entry = verifyNotNull(serializer.decode(log.get(i)), "LogEntry %s was null", i);
                 entries.add(entry);
             }
             return entries;
@@ -189,7 +194,8 @@
         try {
             BTreeMap<Long, byte[]> log = getLogMap(db);
             byte[] entryBytes = log.get(index);
-            return entryBytes == null ? null : serializer.decode(entryBytes);
+            return entryBytes == null ? null : verifyNotNull(serializer.decode(entryBytes),
+                                                             "LogEntry %s was null", index);
         } finally {
             db.close();
         }
@@ -213,7 +219,7 @@
         DB db = txMaker.makeTx();
         try {
             BTreeMap<Long, byte[]> log = getLogMap(db);
-            return log.isEmpty() ? null : serializer.decode(log.lastEntry().getValue());
+            return log.isEmpty() ? null : verifyNotNull(serializer.decode(log.lastEntry().getValue()));
         } finally {
             db.close();
         }
diff --git a/tools/dev/onos.cshrc b/tools/dev/onos.cshrc
index f3dc2e6..22af71d 100644
--- a/tools/dev/onos.cshrc
+++ b/tools/dev/onos.cshrc
@@ -32,10 +32,10 @@
 if ( ! $?KARAF_HOME ) then
     setenv KARAF_HOME $HOME/Applications/apache-karaf-$KARAF_VERSION
 endif
-setenv KARAF_LOG $KARAF/data/log/karaf.log
+setenv KARAF_LOG $KARAF_HOME/data/log/karaf.log
 
 alias onos-setup-cell ' ( env ONOS_CELL=\!^ $ONOS_ROOT/tools/test/bin/onos-show-cell \!^ ) && setenv ONOS_CELL \!^'
 
 set path=( $path $ONOS_ROOT/tools/dev/bin $ONOS_ROOT/tools/test/bin )
 set path=( $path $ONOS_ROOT/tools/build )
-set path=( $path $KARAF/bin )
+set path=( $path $KARAF_HOME/bin )