Description
In some cases indy-vdr will timeout connecting to a pool when one or more of the pool's genesis nodes does not respond.
Scenario:
- indy-vdr versions tested:
0.1.0
and0.3.4
- Sovrin StagingNet
- Active Genesis Nodes:
- Absa
- DigiCert-Node
- NECValidator
- australia
- regioit01
- anonyome
- Connecting with indy-node-monitor in REST API mode.
- Access to DigiCert-Node is blocked (for a reason yet to be determined) from a given IP.
In the above case indy-vdr is unable to connect to the pool and continually times out.
A pool connection can be established and cached by the API by connecting to a different network via VPN and querying the nodes. Once the connection is cached and the VPN disconnected (returning to the blocked IP) additional queries can be made that indicate a node (DigiCert-Node in this case) is not responding. If the pool cache is cleared (the API restarted) indy-vdr is once again unable to connect to the pool.
I have tried to reproduce this issue with von-network with no success.
I have also tried excluding DigiCert-Node from the pool by using the node_weights
like this:
pool = await open_pool(transactions_path=genesis_path, node_weights={'Absa':1.0,'australia':1.0,'regioit01':1.0,'anonyome':1.0,'DigiCert-Node':0.0})
However that always results in the following error whenever any node weight is set to zero:
thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: AllWeightsZero', libindy_vdr/src/pool/pool.rs:172:14
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
This issue was reported and discussed at the 2022-10-25 Indy Contributors call