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
5
5
6
6
import (
7
7
"context"
8
+ "encoding/json"
8
9
"net"
9
10
"sync"
10
11
"time"
@@ -192,13 +193,19 @@ func (nm *networkManager) restore(isRehydrationRequired bool) error {
192
193
// Read any persisted state.
193
194
err := nm .store .Read (storeKey , nm )
194
195
if err != nil {
196
+ var syntaxErr * json.SyntaxError
195
197
if err == store .ErrKeyNotFound {
196
198
logger .Info ("network store key not found" )
197
199
// Considered successful.
198
200
return nil
199
201
} else if err == store .ErrStoreEmpty {
200
202
logger .Info ("network store empty" )
201
203
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" )
202
209
} else {
203
210
logger .Error ("Failed to restore state" , zap .Error (err ))
204
211
return err
You can’t perform that action at this time.
0 commit comments