Skip to content

Commit 565a39b

Browse files
committed
delete cni statefile when unable to be parsed
1 parent d1409b3 commit 565a39b

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

network/manager.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package network
55

66
import (
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

0 commit comments

Comments
 (0)