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 0821b4d6eb..3bdbe2a511 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 @@ -146,7 +146,7 @@ public class MapDBLog implements Log { DB db = txMaker.makeTx(); try { BTreeMap log = getLogMap(db); - return log.isEmpty() ? null : verifyNotNull(serializer.decode(log.firstEntry().getValue())); + return log.isEmpty() ? null : verifyNotNull(decodeEntry(log.firstEntry().getValue())); } finally { db.close(); } @@ -164,6 +164,13 @@ public class MapDBLog implements Log { } } + private T decodeEntry(final byte[] bytes) { + if (bytes == null) { + return null; + } + return serializer.decode(bytes.clone()); + } + @Override public List getEntries(long from, long to) { assertIsOpen(); @@ -179,7 +186,7 @@ public class MapDBLog implements Log { } List entries = new ArrayList<>((int) (to - from + 1)); for (long i = from; i <= to; i++) { - T entry = verifyNotNull(serializer.decode(log.get(i)), "LogEntry %s was null", i); + T entry = verifyNotNull(decodeEntry(log.get(i)), "LogEntry %s was null", i); entries.add(entry); } return entries; @@ -195,7 +202,7 @@ public class MapDBLog implements Log { try { BTreeMap log = getLogMap(db); byte[] entryBytes = log.get(index); - return entryBytes == null ? null : verifyNotNull(serializer.decode(entryBytes), + return entryBytes == null ? null : verifyNotNull(decodeEntry(entryBytes), "LogEntry %s was null", index); } finally { db.close(); @@ -220,7 +227,7 @@ public class MapDBLog implements Log { DB db = txMaker.makeTx(); try { BTreeMap log = getLogMap(db); - return log.isEmpty() ? null : verifyNotNull(serializer.decode(log.lastEntry().getValue())); + return log.isEmpty() ? null : verifyNotNull(decodeEntry(log.lastEntry().getValue())); } finally { db.close(); }