hyperledger / indy-vdr

A library and proxy server for interacting with Hyperledger Indy Node ledger instances
Apache License 2.0
55 stars 71 forks source link

Features missing from the JavaScript wrapper #241

Closed swcurran closed 11 months ago

swcurran commented 12 months ago

A couple of key features that seem to impact performance are in the Python wrapper, but not in the JavaScript wrapper. Consider adding those features.

swcurran commented 12 months ago

@andrewwhitehead @cvarjao @jleach @WadeBarnes -- Did I get that right?

andrewwhitehead commented 12 months ago

In the Python wrapper, the open_pool method actually takes a 'no_refresh' parameter with the assumption that it should always perform a refresh before returning.

I couldn't find it before, but it appears that the nodejs and react-native wrappers do have a 'setConfig' method that can be used to set the pool configuration globally. This should be called before creating any pool instances, if it needs to be adjusted. For speeding up the initial setup I would explore setting the request_read_nodes parameter to 1 (default is 2) which defines the minimum number of nodes to send each request to. Along with this change it might be beneficial to reduce ack_timeout from 20 seconds; this is the time it will wait before dispatching another request, when the first node is slow to respond. The full set of options is here (could also use documenting elsewhere): https://github.com/hyperledger/indy-vdr/blob/323f28b547424b7f7559330eb18eed1d23ed34c2/libindy_vdr/src/config/types.rs#L8 When connecting to multiple ledgers at startup I would also make sure that those connections are performed in parallel.

swcurran commented 12 months ago

Good stuff! Questions:

ACA-Py leaves the “no_refresh” parameter as is, correct? Is the “refresh” that results from checking that parameter get executed by the Python wrapper, or within Indy VDR itself?

What do you suggestion lowering ack_timeout to?

I’ll get a PR in to the documentation here, and I’ll put an issue into AFJ for the changes that might be/are needed.

swcurran commented 11 months ago

Closing this issue as PR #242 has been completed where the Global Defaults were adjusted.

AFJ and other libraries are still able to update the defaults, but at least the defaults are improved.