Closed marcelo-gonzalez closed 2 months ago
you can see that it's failing due to congestion control because of missing chunks by printing out the status here and running without the sleep added in this PR. What I saw was that it was rejected with missing_chunks: 3
. And then looking at the blocks on disk, we see that the first block in the network had height 3 and no chunks, so the included genesis chunks have height 0 and we reject the tx.
Then after you apply that sleep you can see that the request manager stuff is the culprit by just printing out debug info where the response is received and the cached response is checked and you see that we get no cached response directly after saving it. Printing out the current thread id will show that they're different view client actors
All modified and coverable lines are covered by tests :white_check_mark:
Project coverage is 71.74%. Comparing base (
54bfccb
) to head (9bb2610
). Report is 3 commits behind head on master.
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
The
ViewClientRequestManager
is meant to remember what tx status requests we've sent to other nodes so we can serve future view client requests after receiving it. But before this change, each view client has its own cache. This means that tx status responses are only available to the same view client thread, which might not have been the one that made the request. So if we share it across threads, we fix this issueAlso in this change we wait a bit in single_shard_tracking.py before sending transactions because otherwise the first block after the localnet is started often has no new chunks and the transaction is rejected by congestion control because the computed current height - height included (which is the genesis height) is too high