Limit the frequency that queryChannelsOnConnection()
is called in the main relayer loop
#726
Labels
Milestone
queryChannelsOnConnection()
is called in the main relayer loop
#726
The main relayer loop queries all of the channels available for the configured connection, applies a filter rule (allow or deny list), then filters out only the channels that are in
OPEN
state, spins up a goroutine for each open channel that it is attempting to relay against and blocks until one of these goroutines die; at which point the slice of open channels is updated and the entire loop runs again.Because the goroutines that are relaying packets/acks can die with some frequency we see the query for all channels on the connection run a lot. This query can fetch a rather large collection of data and puts some strain on the configured RPC endpoint so on busier IBC paths we see
queryChannelsOnConnection()
fail after the main relayer loop runs a few times and then the relayer process exits.There is an open issue #685 to not quit if this query fails but to instead keep dialing if we have already run the query once in the same runtime but I propose that we also limit how often this query is even ran.
The text was updated successfully, but these errors were encountered: