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
}