Skip to content

Commit f75569e

Browse files
committed
apply review comments
1 parent 9e924e8 commit f75569e

File tree

2 files changed

+37
-16
lines changed

2 files changed

+37
-16
lines changed

cmd/util/cmd/verify_execution_result/cmd.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,11 @@ func init() {
3636

3737
Cmd.Flags().StringVar(&flagDatadir, "datadir", "/var/flow/data/protocol",
3838
"directory that stores the protocol state")
39+
_ = Cmd.MarkFlagRequired("datadir")
3940

4041
Cmd.Flags().StringVar(&flagChunkDataPackDir, "chunk_data_pack_dir", "/var/flow/data/chunk_data_pack",
4142
"directory that stores the protocol state")
43+
_ = Cmd.MarkFlagRequired("chunk_data_pack_dir")
4244

4345
Cmd.Flags().Uint64Var(&flagLastK, "lastk", 1,
4446
"last k sealed blocks to verify")

engine/verification/verifier/verifiers.go

Lines changed: 35 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ package verifier
33
import (
44
"fmt"
55

6-
"github.com/cockroachdb/pebble"
7-
"github.com/dgraph-io/badger/v2"
86
"github.com/rs/zerolog"
97
"github.com/rs/zerolog/log"
108

@@ -26,18 +24,14 @@ import (
2624
// It assumes the latest sealed block has been executed, and the chunk data packs have not been
2725
// pruned.
2826
func VerifyLastKHeight(k uint64, chainID flow.ChainID, protocolDataDir string, chunkDataPackDir string) error {
29-
db, storages, cdpDB, chunkDataPacks, state, verifier, err := initStorages(chainID, protocolDataDir, chunkDataPackDir)
27+
closer, storages, chunkDataPacks, state, verifier, err := initStorages(chainID, protocolDataDir, chunkDataPackDir)
3028
if err != nil {
3129
return fmt.Errorf("could not init storages: %w", err)
3230
}
3331
defer func() {
34-
err := db.Close()
35-
if err != nil {
36-
log.Error().Err(err).Msg("failed to close db")
37-
}
38-
err = cdpDB.Close()
32+
err := closer()
3933
if err != nil {
40-
log.Error().Err(err).Msg("failed to close chunk data pack db")
34+
log.Error().Err(err).Msg("failed to close storages")
4135
}
4236
}()
4337

@@ -47,6 +41,12 @@ func VerifyLastKHeight(k uint64, chainID flow.ChainID, protocolDataDir string, c
4741
}
4842

4943
root := state.Params().SealedRoot().Height
44+
45+
// preventing overflow
46+
if k > lastSealed.Height+1 {
47+
return fmt.Errorf("k is greater than the number of sealed blocks, k: %d, last sealed height: %d", k, lastSealed.Height)
48+
}
49+
5050
from := lastSealed.Height - k + 1
5151

5252
// root block is not verifiable, because it's sealed already.
@@ -58,6 +58,8 @@ func VerifyLastKHeight(k uint64, chainID flow.ChainID, protocolDataDir string, c
5858
}
5959
to := lastSealed.Height
6060

61+
log.Info().Msgf("verifying blocks from %d to %d", from, to)
62+
6163
for height := from; height <= to; height++ {
6264
log.Info().Uint64("height", height).Msg("verifying height")
6365
err := verifyHeight(height, storages.Headers, chunkDataPacks, storages.Results, state, verifier)
@@ -75,11 +77,18 @@ func VerifyRange(
7577
chainID flow.ChainID,
7678
protocolDataDir string, chunkDataPackDir string,
7779
) error {
78-
db, storages, chunkDataPacks, state, verifier, err := initStorages(chainID, protocolDataDir, chunkDataPackDir)
80+
closer, storages, chunkDataPacks, state, verifier, err := initStorages(chainID, protocolDataDir, chunkDataPackDir)
7981
if err != nil {
8082
return fmt.Errorf("could not init storages: %w", err)
8183
}
82-
defer db.Close()
84+
defer func() {
85+
err := closer()
86+
if err != nil {
87+
log.Error().Err(err).Msg("failed to close storages")
88+
}
89+
}()
90+
91+
log.Info().Msgf("verifying blocks from %d to %d", from, to)
8392

8493
for height := from; height <= to; height++ {
8594
log.Info().Uint64("height", height).Msg("verifying height")
@@ -93,9 +102,8 @@ func VerifyRange(
93102
}
94103

95104
func initStorages(chainID flow.ChainID, dataDir string, chunkDataPackDir string) (
96-
*badger.DB,
105+
func() error,
97106
*storage.All,
98-
*pebble.DB,
99107
storage.ChunkDataPacks,
100108
protocol.State,
101109
module.ChunkVerifier,
@@ -106,18 +114,29 @@ func initStorages(chainID flow.ChainID, dataDir string, chunkDataPackDir string)
106114
storages := common.InitStorages(db)
107115
state, err := common.InitProtocolState(db, storages)
108116
if err != nil {
109-
return nil, nil, nil, nil, nil, nil, fmt.Errorf("could not init protocol state: %w", err)
117+
return nil, nil, nil, nil, nil, fmt.Errorf("could not init protocol state: %w", err)
110118
}
111119

112120
chunkDataPackDB, err := storagepebble.OpenDefaultPebbleDB(chunkDataPackDir)
113121
if err != nil {
114-
return nil, nil, nil, nil, nil, nil, fmt.Errorf("could not open chunk data pack DB: %w", err)
122+
return nil, nil, nil, nil, nil, fmt.Errorf("could not open chunk data pack DB: %w", err)
115123
}
116124
chunkDataPacks := storagepebble.NewChunkDataPacks(metrics.NewNoopCollector(),
117125
chunkDataPackDB, storages.Collections, 1000)
118126

119127
verifier := makeVerifier(log.Logger, chainID, storages.Headers)
120-
return db, storages, chunkDataPackDB, chunkDataPacks, state, verifier, nil
128+
closer := func() error {
129+
err := db.Close()
130+
if err != nil {
131+
return fmt.Errorf("failed to close protocol db: %w", err)
132+
}
133+
err = chunkDataPackDB.Close()
134+
if err != nil {
135+
return fmt.Errorf("failed to close chunk data pack db: %w", err)
136+
}
137+
return nil
138+
}
139+
return closer, storages, chunkDataPacks, state, verifier, nil
121140
}
122141

123142
func verifyHeight(

0 commit comments

Comments
 (0)