diff --git a/storage/store/memory/memory.go b/storage/store/memory/memory.go index 9749c18c..cc374d44 100644 --- a/storage/store/memory/memory.go +++ b/storage/store/memory/memory.go @@ -2,7 +2,11 @@ package memory import ( "encoding/gob" + "io/fs" + "io/ioutil" + "log" "sort" + "strings" "sync" "time" @@ -40,6 +44,20 @@ func NewStore(file string) (*Store, error) { if len(file) > 0 { _, err := store.cache.ReadFromFile(file) if err != nil { + // XXX: Remove the block below in v4.0.0 + if data, err2 := ioutil.ReadFile(file); err2 == nil { + isFromOldVersion := strings.Contains(string(data), "*core.ServiceStatus") + if isFromOldVersion { + log.Println("WARNING: Couldn't read file due to recent change in v3.3.0, see https://github.com/TwiN/gatus/issues/191") + log.Println("WARNING: Will automatically rename old file to " + file + ".old and overwrite the current file") + if err = ioutil.WriteFile(file+".old", data, fs.ModePerm); err != nil { + log.Println("WARNING: Tried my best to keep the old file, but it wasn't enough. Sorry, your file will be overwritten :(") + } + // Return the store regardless of whether there was an error or not + return store, nil + } + } + // XXX: Remove the block above in v4.0.0 return nil, err } }