core: fix slow block flag to be disabled by default

Previously, --debug.logslowblock defaulted to 2 seconds (enabled)
and setting 0 would disable logging. This was confusing.

Now:
- Disabled by default (flag must be explicitly set)
- Value 0 logs ALL blocks
- Positive value filters by execution time threshold
This commit is contained in:
CPerezz 2026-01-25 11:33:57 +01:00
parent 7a0e89b4f4
commit 85a1e132a9
No known key found for this signature in database
GPG key ID: 62045F34B97177DD
4 changed files with 26 additions and 10 deletions

View file

@ -692,8 +692,8 @@ var (
} }
LogSlowBlockFlag = &cli.DurationFlag{ LogSlowBlockFlag = &cli.DurationFlag{
Name: "debug.logslowblock", Name: "debug.logslowblock",
Usage: "Block execution time threshold beyond which detailed statistics will be logged (0 means disable)", Usage: "Block execution time threshold beyond which detailed statistics will be logged (0 logs all blocks)",
Value: ethconfig.Defaults.SlowBlockThreshold, Value: 0,
Category: flags.LoggingCategory, Category: flags.LoggingCategory,
} }
@ -2351,8 +2351,12 @@ func MakeChain(ctx *cli.Context, stack *node.Node, readonly bool) (*core.BlockCh
// Enable state size tracking if enabled // Enable state size tracking if enabled
StateSizeTracking: ctx.Bool(StateSizeTrackingFlag.Name), StateSizeTracking: ctx.Bool(StateSizeTrackingFlag.Name),
// Configure the slow block statistic logger // Configure the slow block statistic logger (disabled by default)
SlowBlockThreshold: ctx.Duration(LogSlowBlockFlag.Name), SlowBlockThreshold: ethconfig.Defaults.SlowBlockThreshold,
}
// Only enable slow block logging if the flag was explicitly set
if ctx.IsSet(LogSlowBlockFlag.Name) {
options.SlowBlockThreshold = ctx.Duration(LogSlowBlockFlag.Name)
} }
if options.ArchiveMode && !options.Preimages { if options.ArchiveMode && !options.Preimages {
options.Preimages = true options.Preimages = true

View file

@ -214,7 +214,8 @@ type BlockChainConfig struct {
StateSizeTracking bool StateSizeTracking bool
// SlowBlockThreshold is the block execution time threshold beyond which // SlowBlockThreshold is the block execution time threshold beyond which
// detailed statistics will be logged. // detailed statistics will be logged. Negative value means disabled (default),
// zero logs all blocks, positive value filters blocks by execution time.
SlowBlockThreshold time.Duration SlowBlockThreshold time.Duration
} }

View file

@ -266,10 +266,20 @@ func TestLogSlowBlockThreshold(t *testing.T) {
// Reset buffer // Reset buffer
buf.Reset() buf.Reset()
// Test with zero threshold (disabled) // Test with zero threshold (logs all blocks)
stats.logSlow(block, 0) stats.logSlow(block, 0)
if buf.Len() == 0 {
t.Errorf("Expected output for zero threshold (logs all), got nothing")
}
// Reset buffer
buf.Reset()
// Test with negative threshold (disabled)
stats.logSlow(block, -1)
if buf.Len() > 0 { if buf.Len() > 0 {
t.Errorf("Expected no output for zero threshold, got: %s", buf.String()) t.Errorf("Expected no output for negative threshold (disabled), got: %s", buf.String())
} }
} }

View file

@ -75,7 +75,7 @@ var Defaults = Config{
RPCTxFeeCap: 1, // 1 ether RPCTxFeeCap: 1, // 1 ether
TxSyncDefaultTimeout: 20 * time.Second, TxSyncDefaultTimeout: 20 * time.Second,
TxSyncMaxTimeout: 1 * time.Minute, TxSyncMaxTimeout: 1 * time.Minute,
SlowBlockThreshold: time.Second * 2, SlowBlockThreshold: -1, // Disabled by default; set via --debug.logslowblock flag
RangeLimit: 0, RangeLimit: 0,
} }
@ -130,8 +130,9 @@ type Config struct {
// presence of these blocks for every new peer connection. // presence of these blocks for every new peer connection.
RequiredBlocks map[uint64]common.Hash `toml:"-"` RequiredBlocks map[uint64]common.Hash `toml:"-"`
// SlowBlockThreshold is the block execution speed threshold (Mgas/s) // SlowBlockThreshold is the block execution time threshold beyond which
// below which detailed statistics are logged. // detailed statistics are logged. Negative means disabled (default), zero
// logs all blocks, positive filters by execution time.
SlowBlockThreshold time.Duration `toml:",omitempty"` SlowBlockThreshold time.Duration `toml:",omitempty"`
// Database options // Database options