Skip to content

Commit 38db506

Browse files
cmd/utils/app: fix pprof port collision in seg subcommands (#19424)
Fixes #18778 when --pprof is passed in seg subcommands: - `commonBeforeSnapshotCommand` is injected as a Before hook into every seg/snapshots subcommand via `init()`. It calls `debug.SetupSimple`, which starts the pprof server on :6060. Each subcommand's do* function was also calling `debug.SetupSimple`, causing a second bind attempt on the same port → "listen tcp 127.0.0.1:6060: bind: address already in use". - Remove the redundant `debug.SetupSimple` calls from all affected `do*` functions and inline actions in snapshots_cmd.go, squeeze_cmd.go, step_cmd.go, seg_info_cmd.go, and domain_cmd.go - Use `log.Root()` instead, which returns the already-configured root logger set up by `commonBeforeSnapshotCommand` (same pattern already used in resetCliAction)
1 parent 87011d7 commit 38db506

File tree

5 files changed

+27
-98
lines changed

5 files changed

+27
-98
lines changed

cmd/utils/app/domain_cmd.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,10 @@ import (
1313
"github.com/erigontech/erigon/db/kv"
1414
"github.com/erigontech/erigon/db/kv/dbcfg"
1515
"github.com/erigontech/erigon/db/state/statecfg"
16-
"github.com/erigontech/erigon/node/debug"
1716
"github.com/urfave/cli/v2"
1817
)
1918

2019
func domainStat(cliCtx *cli.Context) error {
21-
_, err := debug.SetupSimple(cliCtx, true /* root logger */)
22-
if err != nil {
23-
return err
24-
}
25-
2620
ticker := time.NewTicker(30 * time.Second)
2721
defer ticker.Stop()
2822

cmd/utils/app/seg_info_cmd.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,16 @@ import (
66
"slices"
77
"time"
88

9+
"github.com/erigontech/erigon/common/log/v3"
910
"github.com/erigontech/erigon/db/datadir"
1011
"github.com/erigontech/erigon/db/seg"
11-
"github.com/erigontech/erigon/node/debug"
1212
"github.com/urfave/cli/v2"
1313
"golang.org/x/text/language"
1414
"golang.org/x/text/message"
1515
)
1616

1717
func segInfo(cliCtx *cli.Context) error {
18-
logger, err := debug.SetupSimple(cliCtx, true /* root logger */)
19-
if err != nil {
20-
return err
21-
}
18+
logger := log.Root()
2219

2320
// Compression settings
2421
compress := cliCtx.String("compress")

cmd/utils/app/snapshots_cmd.go

Lines changed: 22 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -314,14 +314,11 @@ var snapshotCommand = cli.Command{
314314
"It is useful for shadowforks, recovering broken nodes or chains, and/or for doing experiments that " +
315315
"involve replaying certain blocks.",
316316
Action: func(cliCtx *cli.Context) error {
317-
logger, err := debug.SetupSimple(cliCtx, true /* root logger */)
318-
if err != nil {
319-
panic(fmt.Errorf("rollback snapshots to block: could not setup logger: %w", err))
320-
}
317+
logger := log.Root()
321318
block := cliCtx.Uint64("block")
322319
prompt := cliCtx.Bool("prompt")
323320
dataDir := cliCtx.String(utils.DataDirFlag.Name)
324-
err = doRollbackSnapshotsToBlock(cliCtx.Context, block, prompt, dataDir, logger)
321+
err := doRollbackSnapshotsToBlock(cliCtx.Context, block, prompt, dataDir, logger)
325322
if err != nil {
326323
logger.Error(err.Error())
327324
return err
@@ -400,11 +397,8 @@ var snapshotCommand = cli.Command{
400397
{
401398
Name: "check-commitment-hist-at-blk",
402399
Action: func(cliCtx *cli.Context) error {
403-
logger, err := debug.SetupSimple(cliCtx, true /* root logger */)
404-
if err != nil {
405-
panic(fmt.Errorf("check commitment history at block: could not setup logger: %w", err))
406-
}
407-
err = doCheckCommitmentHistAtBlk(cliCtx, logger)
400+
logger := log.Root()
401+
err := doCheckCommitmentHistAtBlk(cliCtx, logger)
408402
if err != nil {
409403
log.Error("[check-commitment-hist-at-blk] failure", "err", err)
410404
return err
@@ -421,11 +415,8 @@ var snapshotCommand = cli.Command{
421415
{
422416
Name: "check-commitment-hist-at-blk-range",
423417
Action: func(cliCtx *cli.Context) error {
424-
logger, err := debug.SetupSimple(cliCtx, true /* root logger */)
425-
if err != nil {
426-
panic(fmt.Errorf("check commitment history at block range: could not setup logger: %w", err))
427-
}
428-
err = doCheckCommitmentHistAtBlkRange(cliCtx, logger)
418+
logger := log.Root()
419+
err := doCheckCommitmentHistAtBlkRange(cliCtx, logger)
429420
if err != nil {
430421
log.Error("[check-commitment-hist-at-blk-range] failure", "err", err)
431422
return err
@@ -444,11 +435,8 @@ var snapshotCommand = cli.Command{
444435
Name: "verify-state",
445436
Description: "verify correspondence between state snapshots (accounts, storage) and commitment snapshots",
446437
Action: func(cliCtx *cli.Context) error {
447-
logger, err := debug.SetupSimple(cliCtx, true /* root logger */)
448-
if err != nil {
449-
panic(fmt.Errorf("verify-state: could not setup logger: %w", err))
450-
}
451-
err = doVerifyState(cliCtx, logger)
438+
logger := log.Root()
439+
err := doVerifyState(cliCtx, logger)
452440
if err != nil {
453441
log.Error("[verify-state] failure", "err", err)
454442
return err
@@ -466,11 +454,8 @@ var snapshotCommand = cli.Command{
466454
Name: "verify-history",
467455
Description: "verify history snapshots by re-executing blocks and comparing state changes",
468456
Action: func(cliCtx *cli.Context) error {
469-
logger, err := debug.SetupSimple(cliCtx, true /* root logger */)
470-
if err != nil {
471-
panic(fmt.Errorf("verify-history: could not setup logger: %w", err))
472-
}
473-
err = doVerifyHistory(cliCtx, logger)
457+
logger := log.Root()
458+
err := doVerifyHistory(cliCtx, logger)
474459
if err != nil {
475460
log.Error("[verify-history] failure", "err", err)
476461
return err
@@ -987,10 +972,7 @@ func doBtSearch(cliCtx *cli.Context) error {
987972
return err
988973
}
989974
defer l.Unlock()
990-
logger, err := debug.SetupSimple(cliCtx, true /* root logger */)
991-
if err != nil {
992-
return err
993-
}
975+
logger := log.Root()
994976

995977
srcF := cliCtx.String("src")
996978
dataFilePath := strings.TrimRight(srcF, ".bt") + ".kv"
@@ -1032,10 +1014,7 @@ func doBtSearch(cliCtx *cli.Context) error {
10321014
}
10331015

10341016
func doDebugKey(cliCtx *cli.Context) error {
1035-
logger, err := debug.SetupSimple(cliCtx, true /* root logger */)
1036-
if err != nil {
1037-
return err
1038-
}
1017+
logger := log.Root()
10391018
key := common.FromHex(cliCtx.String("key"))
10401019
var domain kv.Domain
10411020
var idx kv.InvertedIdx
@@ -1085,10 +1064,7 @@ func doDebugKey(cliCtx *cli.Context) error {
10851064
}
10861065

10871066
func doIntegrity(cliCtx *cli.Context) error {
1088-
logger, err := debug.SetupSimple(cliCtx, true /* root logger */)
1089-
if err != nil {
1090-
return err
1091-
}
1067+
logger := log.Root()
10921068

10931069
ctx := cliCtx.Context
10941070
checkStr := cliCtx.String("check")
@@ -1991,10 +1967,7 @@ func deleteFilesWithExtensions(dir string, extensions []string) error {
19911967
}
19921968

19931969
func doBlkTxNum(cliCtx *cli.Context) error {
1994-
logger, err := debug.SetupSimple(cliCtx, true /* rootLogger */)
1995-
if err != nil {
1996-
return err
1997-
}
1970+
logger := log.Root()
19981971
defer logger.Info("Done")
19991972

20001973
dirs := datadir.New(cliCtx.String(utils.DataDirFlag.Name))
@@ -2163,10 +2136,7 @@ func doMeta(cliCtx *cli.Context) error {
21632136
}
21642137

21652138
func doDecompressSpeed(cliCtx *cli.Context) error {
2166-
logger, err := debug.SetupSimple(cliCtx, true /* rootLogger */)
2167-
if err != nil {
2168-
return err
2169-
}
2139+
logger := log.Root()
21702140
args := cliCtx.Args()
21712141
if args.Len() < 1 {
21722142
return errors.New("expecting file path as a first argument")
@@ -2203,10 +2173,7 @@ func doDecompressSpeed(cliCtx *cli.Context) error {
22032173
}
22042174

22052175
func doIndicesCommand(cliCtx *cli.Context, dirs datadir.Dirs) error {
2206-
logger, err := debug.SetupSimple(cliCtx, true /* rootLogger */)
2207-
if err != nil {
2208-
return err
2209-
}
2176+
logger := log.Root()
22102177
defer logger.Info("Done")
22112178
ctx := cliCtx.Context
22122179

@@ -2255,10 +2222,7 @@ func doIndicesCommand(cliCtx *cli.Context, dirs datadir.Dirs) error {
22552222
return nil
22562223
}
22572224
func doLS(cliCtx *cli.Context, dirs datadir.Dirs) error {
2258-
logger, err := debug.SetupSimple(cliCtx, true /* rootLogger */)
2259-
if err != nil {
2260-
return err
2261-
}
2225+
logger := log.Root()
22622226
defer logger.Info("Done")
22632227
ctx := cliCtx.Context
22642228

@@ -2387,10 +2351,6 @@ func doUncompress(cliCtx *cli.Context) error {
23872351
return err
23882352
}
23892353
defer l.Unlock()
2390-
if _, err = debug.SetupSimple(cliCtx, true /* rootLogger */); err != nil {
2391-
return err
2392-
}
2393-
23942354
args := cliCtx.Args()
23952355
if args.Len() < 1 {
23962356
return errors.New("expecting file path as a first argument")
@@ -2425,10 +2385,7 @@ func doCompress(cliCtx *cli.Context) error {
24252385
}
24262386
defer lck.Unlock()
24272387

2428-
logger, err := debug.SetupSimple(cliCtx, true /* rootLogger */)
2429-
if err != nil {
2430-
return err
2431-
}
2388+
logger := log.Root()
24322389
ctx := cliCtx.Context
24332390

24342391
args := cliCtx.Args()
@@ -2526,10 +2483,7 @@ func doCompress(cliCtx *cli.Context) error {
25262483
}
25272484

25282485
func doRemoveOverlap(cliCtx *cli.Context, dirs datadir.Dirs) error {
2529-
logger, err := debug.SetupSimple(cliCtx, true /* rootLogger */)
2530-
if err != nil {
2531-
return err
2532-
}
2486+
logger := log.Root()
25332487
defer logger.Info("Done")
25342488

25352489
db := dbCfg(dbcfg.ChainDB, dirs.Chaindata).MustOpen()
@@ -2549,10 +2503,7 @@ func doRemoveOverlap(cliCtx *cli.Context, dirs datadir.Dirs) error {
25492503
}
25502504

25512505
func doUnmerge(cliCtx *cli.Context, dirs datadir.Dirs) error {
2552-
logger, err := debug.SetupSimple(cliCtx, true /* rootLogger */)
2553-
if err != nil {
2554-
return err
2555-
}
2506+
logger := log.Root()
25562507
defer logger.Info("Done")
25572508

25582509
ctx := cliCtx.Context
@@ -2684,10 +2635,7 @@ func doUnmerge(cliCtx *cli.Context, dirs datadir.Dirs) error {
26842635
}
26852636

26862637
func doRetireCommand(cliCtx *cli.Context, dirs datadir.Dirs) error {
2687-
logger, err := debug.SetupSimple(cliCtx, true /* rootLogger */)
2688-
if err != nil {
2689-
return err
2690-
}
2638+
logger := log.Root()
26912639
defer logger.Info("Done")
26922640
ctx := cliCtx.Context
26932641

@@ -2818,10 +2766,7 @@ func doRetireCommand(cliCtx *cli.Context, dirs datadir.Dirs) error {
28182766
func doCompareIdx(cliCtx *cli.Context) error {
28192767
// doesn't compare exact hashes offset,
28202768
// only sizes, counts, offsets, and ordinal lookups.
2821-
logger, err := debug.SetupSimple(cliCtx, true /* root logger */)
2822-
if err != nil {
2823-
return err
2824-
}
2769+
logger := log.Root()
28252770

28262771
cmpFn := func(f, s uint64, msg string) {
28272772
if f != s {

cmd/utils/app/squeeze_cmd.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ import (
3737
"github.com/erigontech/erigon/db/snaptype"
3838
"github.com/erigontech/erigon/db/snaptype2"
3939
"github.com/erigontech/erigon/db/state"
40-
"github.com/erigontech/erigon/node/debug"
4140
"github.com/erigontech/erigon/node/ethconfig"
4241
)
4342

@@ -56,10 +55,7 @@ func doSqueeze(cliCtx *cli.Context) error {
5655
return err
5756
}
5857
defer l.Unlock()
59-
logger, err := debug.SetupSimple(cliCtx, true /* rootLogger */)
60-
if err != nil {
61-
return err
62-
}
58+
logger := log.Root()
6359
ctx := cliCtx.Context
6460
logEvery := time.NewTicker(10 * time.Second)
6561
defer logEvery.Stop()

cmd/utils/app/step_cmd.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,13 @@ import (
1515
"github.com/urfave/cli/v2"
1616

1717
"github.com/erigontech/erigon/common/dir"
18+
"github.com/erigontech/erigon/common/log/v3"
1819
"github.com/erigontech/erigon/db/datadir"
1920
"github.com/erigontech/erigon/db/state"
20-
"github.com/erigontech/erigon/node/debug"
2121
)
2222

2323
func stepRebase(cliCtx *cli.Context) error {
24-
logger, err := debug.SetupSimple(cliCtx, true /* root logger */)
25-
if err != nil {
26-
return err
27-
}
24+
logger := log.Root()
2825

2926
ticker := time.NewTicker(30 * time.Second)
3027
defer ticker.Stop()

0 commit comments

Comments
 (0)