File tree Expand file tree Collapse file tree 1 file changed +7
-0
lines changed Expand file tree Collapse file tree 1 file changed +7
-0
lines changed Original file line number Diff line number Diff line change @@ -5,6 +5,7 @@ package network
55
66import (
77 "context"
8+ "encoding/json"
89 "net"
910 "sync"
1011 "time"
@@ -192,13 +193,19 @@ func (nm *networkManager) restore(isRehydrationRequired bool) error {
192193 // Read any persisted state.
193194 err := nm .store .Read (storeKey , nm )
194195 if err != nil {
196+ var syntaxErr * json.SyntaxError
195197 if err == store .ErrKeyNotFound {
196198 logger .Info ("network store key not found" )
197199 // Considered successful.
198200 return nil
199201 } else if err == store .ErrStoreEmpty {
200202 logger .Info ("network store empty" )
201203 return nil
204+ } else if errors .As (err , & syntaxErr ) {
205+ // if null chars detected or failed to parse, state is unrecoverable; delete it
206+ logger .Error ("Failed to parse corrupted state, deleting" , zap .Error (err ))
207+ nm .store .Remove ()
208+ return errors .Wrap (err , "failed to parse corrupted state" )
202209 } else {
203210 logger .Error ("Failed to restore state" , zap .Error (err ))
204211 return err
You can’t perform that action at this time.
0 commit comments