You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
After a fast catchup, fetching the messagepack encoded first block from the API returns a 404.
Steps to reproduce
In this test, we use the conduit profile and a version of algod which causes followers to pause after a fast catchup. This makes the issue easier to reproduce.
mkdir test_data
algocfg profile set conduit -d "test_data"
algocfg set -p EndpointAddress -v "0.0.0.0:8080" -d "test_data"
I'm not sure that this is actually a bug. That being said, we can change the behavior if we want to.
The reason the json request works and the msgp does not is because the json request does not include the Cert. When the msgp request attempts to lookup and encode the cert it finds nothing and errors whereas the json does not attempt to fetch the cert.
If you were to run the same catchpoint and make a msgp and json request against any of the previous ~1000 rounds before the catchpoint round you'd find the same behaviour--msgp errors while json does not. This is because the catchpoint catchup service does not fetch certs as part of its catchup process.
The reason that round 26000001 works is because that round and all of the rounds up to MaxAcctLookback were fetched by the regular catchup service after catchpoint catchup completed. Regular catchup does fetch the certs along with the blocks.
So if we want to be able to serve certs from the catchpoint round or any of the previous rounds fetched during catchpoint catchup we would have to add cert fetching to the catchpoint catchup service--which is doable, but currently does not happen.
Subject of the issue
After a fast catchup, fetching the messagepack encoded first block from the API returns a 404.
Steps to reproduce
In this test, we use the conduit profile and a version of algod which causes followers to pause after a fast catchup. This makes the issue easier to reproduce.
mkdir test_data
algocfg profile set conduit -d "test_data"
algocfg set -p EndpointAddress -v "0.0.0.0:8080" -d "test_data"
cp /path/to/go-algorand/installer/genesis/betanet/genesis.json test_data/genesis.json
goal node start -d "test_data"
goal node catchup -d "test_data" 26000000#LLCDX3RAAYVU7T4ZIHBVEK4SJCIAHK4IIJLVI52SJGJIBYJHZ75Q
watch goal node status -d "test_data"
curl -H "Authorization: Bearer "$(cat test_data/algod.token) "http://127.0.0.1:8080/v2/blocks/26000000?format=msgpack"
Note:
format=json
works:curl -H "Authorization: Bearer "$(cat test_data/algod.token) "http://127.0.0.1:8080/v2/blocks/26000000?format=json"
Expected behaviour
The msgpack encoded block is returned.
Actual behaviour
An error:
{"message":"failed to retrieve information from the ledger"}
The text was updated successfully, but these errors were encountered: