Skip to content

Commit 2b4d7d0

Browse files
authored
Merge branch 'master' into AndriiSlisarchuk/5790-add-stop-control
2 parents 721d248 + 72ac1d1 commit 2b4d7d0

File tree

3 files changed

+674
-22
lines changed

3 files changed

+674
-22
lines changed

cmd/util/cmd/check-storage/cmd.go

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package check_storage
22

33
import (
44
"context"
5-
"slices"
65

76
"github.com/rs/zerolog/log"
87
"github.com/spf13/cobra"
@@ -14,6 +13,7 @@ import (
1413
"github.com/onflow/flow-go/cmd/util/ledger/reporters"
1514
"github.com/onflow/flow-go/cmd/util/ledger/util"
1615
"github.com/onflow/flow-go/cmd/util/ledger/util/registers"
16+
"github.com/onflow/flow-go/fvm/evm/emulator/state"
1717
"github.com/onflow/flow-go/fvm/systemcontracts"
1818
"github.com/onflow/flow-go/ledger"
1919
"github.com/onflow/flow-go/model/flow"
@@ -29,6 +29,14 @@ var (
2929
flagNWorker int
3030
)
3131

32+
var (
33+
evmAccount flow.Address
34+
evmStorageIDKeys = []string{
35+
state.AccountsStorageIDKey,
36+
state.CodesStorageIDKey,
37+
}
38+
)
39+
3240
var Cmd = &cobra.Command{
3341
Use: "check-storage",
3442
Short: "Check storage health",
@@ -102,13 +110,8 @@ func run(*cobra.Command, []string) {
102110
log.Fatal().Msg("--state-commitment must be provided when --state is provided")
103111
}
104112

105-
// For now, skip EVM storage account since a different decoder is needed for decoding EVM registers.
106-
107-
systemContracts := systemcontracts.SystemContractsForChain(chainID)
108-
109-
acctsToSkip := []string{
110-
flow.AddressToRegisterOwner(systemContracts.EVMStorage.Address),
111-
}
113+
// Get EVM account by chain
114+
evmAccount = systemcontracts.SystemContractsForChain(chainID).EVMStorage.Address
112115

113116
// Create report in JSONL format
114117
rw := reporters.NewReportFileWriterFactoryWithFormat(flagOutputDirectory, log.Logger, reporters.ReportFormatJSONL).
@@ -161,13 +164,13 @@ func run(*cobra.Command, []string) {
161164
len(payloads),
162165
)
163166

164-
failedAccountAddresses, err := checkStorageHealth(registersByAccount, flagNWorker, rw, acctsToSkip)
167+
failedAccountAddresses, err := checkStorageHealth(registersByAccount, flagNWorker, rw)
165168
if err != nil {
166169
log.Fatal().Err(err).Msg("failed to check storage health")
167170
}
168171

169172
if len(failedAccountAddresses) == 0 {
170-
log.Info().Msgf("All %d accounts are health", accountCount)
173+
log.Info().Msgf("All %d accounts are healthy", accountCount)
171174
return
172175
}
173176

@@ -188,7 +191,6 @@ func checkStorageHealth(
188191
registersByAccount *registers.ByAccount,
189192
nWorkers int,
190193
rw reporters.ReportWriter,
191-
acctsToSkip []string,
192194
) (failedAccountAddresses []string, err error) {
193195

194196
accountCount := registersByAccount.AccountCount()
@@ -211,10 +213,6 @@ func checkStorageHealth(
211213
func(accountRegisters *registers.AccountRegisters) error {
212214
defer logAccount(1)
213215

214-
if slices.Contains(acctsToSkip, accountRegisters.Owner()) {
215-
return nil
216-
}
217-
218216
accountStorageIssues := checkAccountStorageHealth(accountRegisters, nWorkers)
219217

220218
if len(accountStorageIssues) > 0 {
@@ -281,9 +279,6 @@ func checkStorageHealth(
281279

282280
err = registersByAccount.ForEachAccount(
283281
func(accountRegisters *registers.AccountRegisters) error {
284-
if slices.Contains(acctsToSkip, accountRegisters.Owner()) {
285-
return nil
286-
}
287282
jobs <- job{accountRegisters: accountRegisters}
288283
return nil
289284
})
@@ -318,6 +313,10 @@ func checkAccountStorageHealth(accountRegisters *registers.AccountRegisters, nWo
318313
}}
319314
}
320315

316+
if isEVMAccount(address) {
317+
return checkEVMAccountStorageHealth(address, accountRegisters)
318+
}
319+
321320
var issues []accountStorageIssue
322321

323322
// Check atree storage health
@@ -331,7 +330,7 @@ func checkAccountStorageHealth(accountRegisters *registers.AccountRegisters, nWo
331330
issues,
332331
accountStorageIssue{
333332
Address: address.Hex(),
334-
Kind: storageErrorKindString[atreeStorageErrorKind],
333+
Kind: storageErrorKindString[cadenceAtreeStorageErrorKind],
335334
Msg: err.Error(),
336335
})
337336
}
@@ -345,12 +344,14 @@ type storageErrorKind int
345344

346345
const (
347346
otherErrorKind storageErrorKind = iota
348-
atreeStorageErrorKind
347+
cadenceAtreeStorageErrorKind
348+
evmAtreeStorageErrorKind
349349
)
350350

351351
var storageErrorKindString = map[storageErrorKind]string{
352-
otherErrorKind: "error_check_storage_failed",
353-
atreeStorageErrorKind: "error_atree_storage",
352+
otherErrorKind: "error_check_storage_failed",
353+
cadenceAtreeStorageErrorKind: "error_cadence_atree_storage",
354+
evmAtreeStorageErrorKind: "error_evm_atree_storage",
354355
}
355356

356357
type accountStorageIssue struct {

0 commit comments

Comments
 (0)