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
But when it sends get_blocks_ack_request_v0 it seems to send the total number of messages it has received so far (I don't see num_messages reset to 0, except on connection failure),
auto ec = send_get_blocks_ack_request(num_messages);
This is not proper use of the get_blocks_ack_request_v0 interface. max_messages_in_flight+get_blocks_ack_request_v0 is a simple credit system where on the initial request the number of credits are established, nodeos decreases its credit count on each block it sends, and get_blocks_ack_request_v0 credits back the given number.
If I did the math right, after about 3 million blocks the current code will roll over nodeos' credit counter. When this occurs nodeos might think it has 0 credits and stop sending blocks.
For a c++ reader not sure it's worth bothering with non-UINT32_MAX max_messages_in_flight since socket back pressure works properly. The primary reason this exists as part of the ship protocol is that websockets in nodejs lacked (lacks?) proper socket back pressure. So IMO should just set max_messages_in_flight = UINT32_MAX and get rid of the ack stuff.
The text was updated successfully, but these errors were encountered:
eos-evm-node's state history request sets
max_messages_in_flight
to 4096,eos-evm-node/src/ship_receiver_plugin.cpp
Lines 117 to 121 in 3a1eaaa
But when it sends
get_blocks_ack_request_v0
it seems to send the total number of messages it has received so far (I don't seenum_messages
reset to 0, except on connection failure),eos-evm-node/src/ship_receiver_plugin.cpp
Lines 348 to 350 in 3a1eaaa
This is not proper use of the
get_blocks_ack_request_v0
interface.max_messages_in_flight
+get_blocks_ack_request_v0
is a simple credit system where on the initial request the number of credits are established, nodeos decreases its credit count on each block it sends, andget_blocks_ack_request_v0
credits back the given number.If I did the math right, after about 3 million blocks the current code will roll over nodeos' credit counter. When this occurs nodeos might think it has 0 credits and stop sending blocks.
For a c++ reader not sure it's worth bothering with non-
UINT32_MA
Xmax_messages_in_flight
since socket back pressure works properly. The primary reason this exists as part of the ship protocol is that websockets in nodejs lacked (lacks?) proper socket back pressure. So IMO should just setmax_messages_in_flight = UINT32_MAX
and get rid of the ack stuff.The text was updated successfully, but these errors were encountered: