go-ethereum/internal
ozpool 20d6757391 internal/ethapi, eth: only gate eth_syncing when Engine API is registered
The previous version of this change unconditionally returned the progress
map until the consensus client had driven the node at least once. That
broke ethclient.TestEthClient/StatusFunctions and any other backend that
runs without a consensus client (in-process tests, --dev mode without
catalyst, light/legacy backends), where reporting "syncing" forever is
clearly wrong.

Split the gate into two flags:

  - clExpected: set in eth/catalyst.Register, the only entry point that
    attaches the Engine API to a node. If a backend never calls Register,
    it is not paired with a consensus client.
  - clContacted: set on every Engine API call (forkchoiceUpdated and
    newPayload), unchanged from before.

Replace ConsensusContacted on the Backend interface with ConsensusReady,
which folds the two flags into the question eth_syncing actually wants
answered: "is the synced claim meaningful right now?" Backends that
never expect a CL answer yes immediately, preserving legacy behavior.
Backends that do expect one answer yes only after the first FCU/NewPayload.

  - eth/backend.go: clExpected, clContacted, MarkConsensusExpected,
    MarkConsensusContacted, ConsensusReady on (*Ethereum)
  - eth/catalyst/api.go: backend.MarkConsensusExpected() in Register
  - eth/api_backend.go: ConsensusReady delegates to (*Ethereum)
  - internal/ethapi/backend.go: rename interface method to ConsensusReady
  - internal/ethapi/api.go: Syncing checks ConsensusReady
  - internal/ethapi/{api_test,transaction_args_test}.go: rename the test
    mock methods (default to true so existing tests are unaffected)
  - internal/ethapi/syncing_test.go: rename the helper field; tests now
    cover (a) CL-paired node before handshake -> truthy, (b) ready node
    -> false, (c) active sync -> progress map regardless of gate

Refs #33687.
2026-05-13 12:03:50 +05:30
..
blocktest crypto/keccak: vendor in golang.org/x/crypto/sha3 (#33323) 2026-02-03 14:55:27 -07:00
build .gitea, build: cross-compile windows binaries (#34889) 2026-05-08 15:18:24 +02:00
cmdtest cmd/geth, internal: fix flaky console tests (#31784) 2025-05-08 15:15:36 +02:00
debug internal/debug: add integration with Grafana Pyroscope (#33623) 2026-01-20 10:33:09 +01:00
download internal/download: close dst on io.Copy error (#34910) 2026-05-10 13:43:40 +02:00
era internal/era/onedb: return false if err (#34816) 2026-05-01 14:10:41 +02:00
ethapi internal/ethapi, eth: only gate eth_syncing when Engine API is registered 2026-05-13 12:03:50 +05:30
flags internal/flags: update copyright year to 2026 (#33550) 2026-01-08 11:49:13 +08:00
guide all: fix typos in docs and comments (#31548) 2025-04-02 13:52:40 -06:00
jsre internal/jsre: pass correct args to setTimeout/setInterval callbacks (#32936) 2025-10-28 12:34:14 +01:00
reexec internal/reexec: fix broken link to Docker/Moby in comment (#31859) 2025-05-20 15:58:00 +08:00
shutdowncheck eth, les: update unclean shutdown markers regularly (#24077) 2021-12-17 15:18:51 +01:00
syncx core: improve shutdown synchronization in BlockChain (#22853) 2021-10-07 15:47:50 +02:00
tablewriter cmd/geth: add inspect trie tool to analysis trie storage (#28892) 2026-02-24 10:56:00 -07:00
telemetry internal/telemetry: add gRPC transport for OTLP trace export (#33941) 2026-04-21 14:48:21 +02:00
testlog internal/testlog: fix log output from sub-loggers (#31539) 2025-04-10 18:21:32 +02:00
testrand triedb/pathdb: improve tests (#29278) 2024-03-19 10:50:08 +08:00
utesting internal: run tests in parallel (#30381) 2024-09-16 08:44:47 +02:00
version build, internal, version: break ci.go/version->common dependency (#30638) 2024-10-20 19:28:39 +03:00
web3ext cmd, core, eth, tests: prevent state flushing in RPC (#33931) 2026-03-04 14:40:45 +08:00