Page MenuHomePhabricator

Merge #13063: Use shared pointer to retain wallet instance
AbandonedPublic

Authored by nakihito on Sep 20 2019, 23:39.

Details

Reviewers
deadalnix
Fabien
jasonbcox
Group Reviewers
Restricted Owners Package(Owns No Changed Paths)
Restricted Project
Summary

80b4910f7d87983f50047074c3c2397b0a5c4e92 wallet: Use shared pointer to retain wallet instance (João Barbosa)

Pull request description:

Currently there are 3 places where it makes sense to retain a wallet shared pointer:
 - `vpwallets`;
 - `interfaces::Wallet` interface instance - used by the UI;
 - wallet RPC functions - given by `GetWalletForJSONRPCRequest`.

The way it is now it is possible to have, for instance, listunspent RPC and in parallel unload the wallet (once #13111 is merged) without blocking. Once the RPC finishes, the shared pointer will release the wallet.

It is also possible to get all existing wallets without blocking because the caller keeps a local list of shared pointers.

This is mostly relevant for wallet unloading.

This PR replaces #11402.

Tree-SHA512: b7e37c7e1ab56626085afe2d40b1628e8d4f0dbda08df01b7e618ecd2d894ce9b83d4219443f444ba889096286eff002f163cb0a48f37063b62e9ba4ccfa6cce

Backport of Core PR13063
https://github.com/bitcoin/bitcoin/pull/13063/files

Test Plan
make check

Diff Detail

Repository
rABC Bitcoin ABC
Branch
PR13063
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 7531
Build 13102: Bitcoin ABC Buildbot (legacy)
Build 13101: arc lint + arc unit