lighthouse icon indicating copy to clipboard operation
lighthouse copied to clipboard

Endpoints that require the node to be synced respond with "Unsupported endpoint version" while syncing

Open dknopik opened this issue 1 year ago • 3 comments

Description

While a node is syncing (SyncState::SyncingFinalized), some endpoints are disabled. When trying to use an endpoint that expects a POST request and requires the node to be synced, the response is incorrect: BAD_REQUEST: Unsupported endpoint version: v1. As soon as the node is synced, the endpoints work properly again. Endoints expecting a GET request are seemingly unaffected.

Version

I was able to trigger this with a recent unstable version and with @eserilev's branch #4575:

  • Lighthouse v4.6.0-0b6c898 (unstable)
  • Lighthouse v4.5.0-afd06b7 (#4575)

Present Behaviour

  1. A node is syncing a finalized chain (e.g. after some downtime)
  2. curl -X POST -H "Content-Type: application/json" --data '["1552654"]' "http://localhost:5052/eth/v1/validator/duties/sync/123" results in {"code":400,"message":"BAD_REQUEST: Unsupported endpoint version: v1","stacktraces":[]}, also if -H "Content-Type: application/json" is removed.
  3. As soon as the node is synced, a proper response is sent again.

Expected Behaviour

Respond with {"code":503,"message":"SERVICE_UNAVAILABLE: beacon node is syncing: head slot is 825919, current slot is 864126","stacktraces":[]} until it is synced.

Steps to resolve

Adjust the warp filters (maybe not_while_syncing_filter)

dknopik avatar Jan 27 '24 08:01 dknopik

Thanks for reporting!

I was able to trigger this with a recent unstable version and with @eserilev's branch https://github.com/sigp/lighthouse/pull/4575:

So the error happens only with #4575 or is fixed with #4575?

dapplion avatar Jan 29 '24 06:01 dapplion

So the error happens only with #4575 or is fixed with #4575?

It happens both with and without #4575. I mentioned #4575 because @michaelsproul suggested that the error might be fixed with that branch, which is not the case, so I wanted to emphasize that this is a separate issue.

dknopik avatar Jan 29 '24 08:01 dknopik

~~I believe the issue is that this endpoint doesn't conform to the beacon api spec in the case where the chain is still finalizing. I can pick this one up. Will also spend some time reviewing our other endpoints to ensure they are also conforming to spec for the relevant edge cases.~~

the not_while_syncing_filter should be rejecting with a not synced error message. For some reason thats not happening, will investigate why

eserilev avatar Jan 29 '24 12:01 eserilev

Fixed in #5136 🎉

jimmygchen avatar May 01 '24 01:05 jimmygchen