Distance oracle must have state to download WoT

I have this in the logs of my distance oracle:

Cannot create RPC client: Rpc(ClientError(Call(ErrorObject { code: ServerError(-32000), message: "Client error: UnknownBlock: State already discarded for 0xc5aa6d4d5929c8bd22af44f51db17bb5121e248d5eb7e1482f92c90ee5f2c625", data: None })))

I do not know why I did not encounter this error before (maybe because of the higher sampling period), but it makes sense since:

  • my validator node is configured with light pruning profile (keeps states of latest 256 block only)
  • my distance oracle is configured to fetch wot from my validator RPC

There are multiple solutions to this problem:

  • increase the retaining duration of smith node up to the needs of distance oracle
  • set the distance oracle endpoint to an other node which keeps more states
  • start the distance oracle more frequently to request latest state as soon as possible

Right now the distance sessions are based on sessions (1h = 600 blocks > 256). But when we will use runtime 802 (with #202 (closed) in !252 (merged)), it will be based on evaluation period (3*7 blocks = 21 block = 126 s ~= 2 min):

type EvaluationPeriod = frame_support::traits::ConstU32<7>;

By chance this falls below the 256 value, but this should at least be mentioned in the oracle documentation.