go-ethereum/cmd/utils
Barnabas Busa da34eb59fd
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
node: default OpenTelemetry SampleRatio to 1.0 (#34948)
## Summary

The `--rpc.telemetry.sample-ratio` flag declares `Value: 1.0` and `geth
--help` advertises `(default: 1)`. In practice, however, omitting the
flag produces a sample ratio of `0`, causing
`sdktrace.TraceIDRatioBased(0)` to drop 100% of spans. Users who enable
`--rpc.telemetry` see the `OpenTelemetry trace export enabled` log line
and a clean startup, but no traces ever leave the process.

The root cause is the interaction between two pieces of code:

1. `cmd/utils/flags.go:setOpenTelemetry` (added in #34062) only copies
the flag value when `ctx.IsSet(...)` returns true:

   ```go
   if ctx.IsSet(RPCTelemetrySampleRatioFlag.Name) {
       tcfg.SampleRatio = ctx.Float64(RPCTelemetrySampleRatioFlag.Name)
   }
   ```

That is the right pattern for "don't clobber a config-file value with
the CLI default," but it implies that something else must initialise the
field when neither source sets it.

2. `node/defaults.go:DefaultConfig` never initialises
`OpenTelemetry.SampleRatio`, leaving it at the float64 zero value.

The result for the common CLI-only user (no TOML config) is `SampleRatio
= 0` → every span is silently dropped, despite the documented default of
1.

## Change

Seed `OpenTelemetry: OpenTelemetryConfig{SampleRatio: 1.0}` in
`node.DefaultConfig` so the documented default matches runtime behavior
and the `ctx.IsSet` guard in `setOpenTelemetry` continues to do what it
was designed to do.
2026-05-13 14:08:21 -05:00
..
cmd.go cmd/utils: optimize history import with batched insertion (#33894) 2026-03-24 21:47:18 +01:00
diskusage.go all: add build tags for wasip1 (#31090) 2025-01-30 16:58:53 +01:00
diskusage_openbsd.go all: update license headers and AUTHORS from git history (#24947) 2022-05-24 20:39:40 +02:00
diskusage_windows.go all: update license headers and AUTHORS from git history (#24947) 2022-05-24 20:39:40 +02:00
export_test.go all: use fmt.Appendf instead of fmt.Sprintf where possible (#31301) 2025-03-25 14:53:02 +01:00
flags.go node: default OpenTelemetry SampleRatio to 1.0 (#34948) 2026-05-13 14:08:21 -05:00
flags_legacy.go cmd/utils: show full deprecated flags (#32141) 2025-07-04 09:40:16 +08:00
flags_test.go build: update to golangci-lint 1.61.0 (#30587) 2024-10-14 19:25:22 +02:00
history_test.go internal/era: New EraE implementation (#32157) 2026-02-09 08:30:19 -07:00
prompt.go cmd/geth: remove unlock commandline flag (#30737) 2024-11-15 10:15:15 +01:00