VOL-1774 Etcd Crash Handling

Change-Id: I1eeb726654c3972fd0a4fafae134607e5a810415
diff --git a/db/model/persisted_revision.go b/db/model/persisted_revision.go
index b5f1d09..b9aad44 100644
--- a/db/model/persisted_revision.go
+++ b/db/model/persisted_revision.go
@@ -518,13 +518,14 @@
 
 // LoadFromPersistence retrieves data from kv store at the specified location and refreshes the memory
 // by adding missing entries, updating changed entries and ignoring unchanged ones
-func (pr *PersistedRevision) LoadFromPersistence(ctx context.Context, path string, txid string, blobs map[string]*kvstore.KVPair) []Revision {
+func (pr *PersistedRevision) LoadFromPersistence(ctx context.Context, path string, txid string, blobs map[string]*kvstore.KVPair) ([]Revision, error) {
 	pr.mutex.Lock()
 	defer pr.mutex.Unlock()
 
 	log.Debugw("loading-from-persistence", log.Fields{"path": path, "txid": txid})
 
 	var response []Revision
+	var err error
 
 	for strings.HasPrefix(path, "/") {
 		path = path[1:]
@@ -533,7 +534,11 @@
 	if pr.kvStore != nil && path != "" {
 		if blobs == nil || len(blobs) == 0 {
 			log.Debugw("retrieve-from-kv", log.Fields{"path": path, "txid": txid})
-			blobs, _ = pr.kvStore.List(path)
+
+			if blobs, err = pr.kvStore.List(path); err != nil {
+				log.Errorw("failed-to-retrieve-data-from-kvstore", log.Fields{"error": err})
+				return nil, err
+			}
 		}
 
 		partition := strings.SplitN(path, "/", 2)
@@ -622,5 +627,5 @@
 		}
 	}
 
-	return response
+	return response, nil
 }