github.com/onflow/flow-go@v0.35.7-crescendo-preview.23-atree-inlining/storage/badger/operation/bft.go (about) 1 package operation 2 3 import ( 4 "errors" 5 "fmt" 6 7 "github.com/dgraph-io/badger/v2" 8 9 "github.com/onflow/flow-go/model/flow" 10 "github.com/onflow/flow-go/storage" 11 ) 12 13 // PurgeBlocklist removes the set of blocked nodes IDs from the data base. 14 // If no corresponding entry exists, this function is a no-op. 15 // No errors are expected during normal operations. 16 // TODO: TEMPORARY manual override for adding node IDs to list of ejected nodes, applies to networking layer only 17 func PurgeBlocklist() func(*badger.Txn) error { 18 return func(tx *badger.Txn) error { 19 err := remove(makePrefix(blockedNodeIDs))(tx) 20 if err != nil && !errors.Is(err, storage.ErrNotFound) { 21 return fmt.Errorf("enexpected error while purging blocklist: %w", err) 22 } 23 return nil 24 } 25 } 26 27 // PersistBlocklist writes the set of blocked nodes IDs into the data base. 28 // If an entry already exists, it is overwritten; otherwise a new entry is created. 29 // No errors are expected during normal operations. 30 // 31 // TODO: TEMPORARY manual override for adding node IDs to list of ejected nodes, applies to networking layer only 32 func PersistBlocklist(blocklist map[flow.Identifier]struct{}) func(*badger.Txn) error { 33 return upsert(makePrefix(blockedNodeIDs), blocklist) 34 } 35 36 // RetrieveBlocklist reads the set of blocked node IDs from the data base. 37 // Returns `storage.ErrNotFound` error in case no respective data base entry is present. 38 // 39 // TODO: TEMPORARY manual override for adding node IDs to list of ejected nodes, applies to networking layer only 40 func RetrieveBlocklist(blocklist *map[flow.Identifier]struct{}) func(*badger.Txn) error { 41 return retrieve(makePrefix(blockedNodeIDs), blocklist) 42 }