From 45bfa35fe1846fd75aae2667bf842855d675e50e Mon Sep 17 00:00:00 2001
From: Jono Wenger <jono@elixxir.io>
Date: Fri, 22 Apr 2022 10:40:50 -0700
Subject: [PATCH] Fix storage/utility/MessageBuffer.Add so that it loads
 messages from storage

---
 storage/utility/messageBuffer.go | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/storage/utility/messageBuffer.go b/storage/utility/messageBuffer.go
index 82c8b898e..8f513bdb9 100644
--- a/storage/utility/messageBuffer.go
+++ b/storage/utility/messageBuffer.go
@@ -203,11 +203,19 @@ func (mb *MessageBuffer) Add(m interface{}) interface{} {
 	defer mb.mux.Unlock()
 
 	// Ensure message does not already exist in buffer
-	if face1, exists1 := mb.messages[h]; exists1 {
-		return face1
+	if _, exists1 := mb.messages[h]; exists1 {
+		msg, err := mb.handler.LoadMessage(mb.kv, MakeStoredMessageKey(mb.key, h))
+		if err != nil {
+			jww.FATAL.Panicf("Error loading message %s: %v", h, err)
+		}
+		return msg
 	}
-	if face2, exists2 := mb.processingMessages[h]; exists2 {
-		return face2
+	if _, exists2 := mb.processingMessages[h]; exists2 {
+		msg, err := mb.handler.LoadMessage(mb.kv, MakeStoredMessageKey(mb.key, h))
+		if err != nil {
+			jww.FATAL.Panicf("Error loading processing message %s: %v", h, err)
+		}
+		return msg
 	}
 
 	// Save message as versioned object
-- 
GitLab