Skip to content

Commit f8102d9

Browse files
author
MarcoFalke
committed
Merge #18601: wallet: Refactor WalletRescanReserver to use wallet reference
fc289b7 wallet: Refactor WalletRescanReserver to use wallet reference (João Barbosa) Pull request description: Simple refactor to `WalletRescanReserver` to use wallet reference instead of pointer. Complements #18259. ACKs for top commit: MarcoFalke: ACK fc289b7 Tree-SHA512: b03e33f2d9df2870436aa3284137fd022dd89ea96a1b170fa27f8685ad4f986e6c4ba5975a84966c30d18430a4014d7d8740a1dff2f985c9ef8226ed18e69db9
2 parents d2882a0 + fc289b7 commit f8102d9

File tree

6 files changed

+23
-23
lines changed

6 files changed

+23
-23
lines changed

src/qt/test/wallettests.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ void TestGUI(interfaces::Node& node)
152152
wallet->SetLastBlockProcessed(105, ::ChainActive().Tip()->GetBlockHash());
153153
}
154154
{
155-
WalletRescanReserver reserver(wallet.get());
155+
WalletRescanReserver reserver(*wallet);
156156
reserver.reserve();
157157
CWallet::ScanResult result = wallet->ScanForWalletTransactions(Params().GetConsensus().hashGenesisBlock, 0 /* block height */, {} /* max height */, reserver, true /* fUpdate */);
158158
QCOMPARE(result.status, CWallet::ScanResult::SUCCESS);

src/wallet/rpcdump.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ UniValue importprivkey(const JSONRPCRequest& request)
130130

131131
EnsureLegacyScriptPubKeyMan(*wallet, true);
132132

133-
WalletRescanReserver reserver(pwallet);
133+
WalletRescanReserver reserver(*pwallet);
134134
bool fRescan = true;
135135
{
136136
auto locked_chain = pwallet->chain().lock();
@@ -274,7 +274,7 @@ UniValue importaddress(const JSONRPCRequest& request)
274274
throw JSONRPCError(RPC_WALLET_ERROR, "Rescan is disabled when blocks are pruned");
275275
}
276276

277-
WalletRescanReserver reserver(pwallet);
277+
WalletRescanReserver reserver(*pwallet);
278278
if (fRescan && !reserver.reserve()) {
279279
throw JSONRPCError(RPC_WALLET_ERROR, "Wallet is currently rescanning. Abort existing rescan or wait.");
280280
}
@@ -474,7 +474,7 @@ UniValue importpubkey(const JSONRPCRequest& request)
474474
throw JSONRPCError(RPC_WALLET_ERROR, "Rescan is disabled when blocks are pruned");
475475
}
476476

477-
WalletRescanReserver reserver(pwallet);
477+
WalletRescanReserver reserver(*pwallet);
478478
if (fRescan && !reserver.reserve()) {
479479
throw JSONRPCError(RPC_WALLET_ERROR, "Wallet is currently rescanning. Abort existing rescan or wait.");
480480
}
@@ -549,7 +549,7 @@ UniValue importwallet(const JSONRPCRequest& request)
549549
throw JSONRPCError(RPC_WALLET_ERROR, "Importing wallets is disabled when blocks are pruned");
550550
}
551551

552-
WalletRescanReserver reserver(pwallet);
552+
WalletRescanReserver reserver(*pwallet);
553553
if (!reserver.reserve()) {
554554
throw JSONRPCError(RPC_WALLET_ERROR, "Wallet is currently rescanning. Abort existing rescan or wait.");
555555
}
@@ -1365,7 +1365,7 @@ UniValue importmulti(const JSONRPCRequest& mainRequest)
13651365
}
13661366
}
13671367

1368-
WalletRescanReserver reserver(pwallet);
1368+
WalletRescanReserver reserver(*pwallet);
13691369
if (fRescan && !reserver.reserve()) {
13701370
throw JSONRPCError(RPC_WALLET_ERROR, "Wallet is currently rescanning. Abort existing rescan or wait.");
13711371
}

src/wallet/rpcwallet.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3540,7 +3540,7 @@ UniValue rescanblockchain(const JSONRPCRequest& request)
35403540
},
35413541
}.Check(request);
35423542

3543-
WalletRescanReserver reserver(pwallet);
3543+
WalletRescanReserver reserver(*pwallet);
35443544
if (!reserver.reserve()) {
35453545
throw JSONRPCError(RPC_WALLET_ERROR, "Wallet is currently rescanning. Abort existing rescan or wait.");
35463546
}

src/wallet/test/wallet_tests.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ BOOST_FIXTURE_TEST_CASE(scan_for_wallet_transactions, TestChain100Setup)
5454
wallet.SetLastBlockProcessed(::ChainActive().Height(), ::ChainActive().Tip()->GetBlockHash());
5555
}
5656
AddKey(wallet, coinbaseKey);
57-
WalletRescanReserver reserver(&wallet);
57+
WalletRescanReserver reserver(wallet);
5858
reserver.reserve();
5959
CWallet::ScanResult result = wallet.ScanForWalletTransactions({} /* start_block */, 0 /* start_height */, {} /* max_height */, reserver, false /* update */);
6060
BOOST_CHECK_EQUAL(result.status, CWallet::ScanResult::FAILURE);
@@ -73,7 +73,7 @@ BOOST_FIXTURE_TEST_CASE(scan_for_wallet_transactions, TestChain100Setup)
7373
wallet.SetLastBlockProcessed(::ChainActive().Height(), ::ChainActive().Tip()->GetBlockHash());
7474
}
7575
AddKey(wallet, coinbaseKey);
76-
WalletRescanReserver reserver(&wallet);
76+
WalletRescanReserver reserver(wallet);
7777
reserver.reserve();
7878
CWallet::ScanResult result = wallet.ScanForWalletTransactions(oldTip->GetBlockHash(), oldTip->nHeight, {} /* max_height */, reserver, false /* update */);
7979
BOOST_CHECK_EQUAL(result.status, CWallet::ScanResult::SUCCESS);
@@ -96,7 +96,7 @@ BOOST_FIXTURE_TEST_CASE(scan_for_wallet_transactions, TestChain100Setup)
9696
wallet.SetLastBlockProcessed(::ChainActive().Height(), ::ChainActive().Tip()->GetBlockHash());
9797
}
9898
AddKey(wallet, coinbaseKey);
99-
WalletRescanReserver reserver(&wallet);
99+
WalletRescanReserver reserver(wallet);
100100
reserver.reserve();
101101
CWallet::ScanResult result = wallet.ScanForWalletTransactions(oldTip->GetBlockHash(), oldTip->nHeight, {} /* max_height */, reserver, false /* update */);
102102
BOOST_CHECK_EQUAL(result.status, CWallet::ScanResult::FAILURE);
@@ -118,7 +118,7 @@ BOOST_FIXTURE_TEST_CASE(scan_for_wallet_transactions, TestChain100Setup)
118118
wallet.SetLastBlockProcessed(::ChainActive().Height(), ::ChainActive().Tip()->GetBlockHash());
119119
}
120120
AddKey(wallet, coinbaseKey);
121-
WalletRescanReserver reserver(&wallet);
121+
WalletRescanReserver reserver(wallet);
122122
reserver.reserve();
123123
CWallet::ScanResult result = wallet.ScanForWalletTransactions(oldTip->GetBlockHash(), oldTip->nHeight, {} /* max_height */, reserver, false /* update */);
124124
BOOST_CHECK_EQUAL(result.status, CWallet::ScanResult::FAILURE);
@@ -463,7 +463,7 @@ class ListCoinsTestingSetup : public TestChain100Setup
463463
bool firstRun;
464464
wallet->LoadWallet(firstRun);
465465
AddKey(*wallet, coinbaseKey);
466-
WalletRescanReserver reserver(wallet.get());
466+
WalletRescanReserver reserver(*wallet);
467467
reserver.reserve();
468468
CWallet::ScanResult result = wallet->ScanForWalletTransactions(::ChainActive().Genesis()->GetBlockHash(), 0 /* start_height */, {} /* max_height */, reserver, false /* update */);
469469
BOOST_CHECK_EQUAL(result.status, CWallet::ScanResult::SUCCESS);

src/wallet/wallet.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4023,7 +4023,7 @@ std::shared_ptr<CWallet> CWallet::CreateWalletFromFile(interfaces::Chain& chain,
40234023
}
40244024

40254025
{
4026-
WalletRescanReserver reserver(walletInstance.get());
4026+
WalletRescanReserver reserver(*walletInstance);
40274027
if (!reserver.reserve() || (ScanResult::SUCCESS != walletInstance->ScanForWalletTransactions(locked_chain->getBlockHash(rescan_height), rescan_height, {} /* max height */, reserver, true /* update */).status)) {
40284028
error = _("Failed to rescan the wallet during initialization").translated;
40294029
return nullptr;

src/wallet/wallet.h

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1244,35 +1244,35 @@ void MaybeResendWalletTxs();
12441244
class WalletRescanReserver
12451245
{
12461246
private:
1247-
CWallet* m_wallet;
1247+
CWallet& m_wallet;
12481248
bool m_could_reserve;
12491249
public:
1250-
explicit WalletRescanReserver(CWallet* w) : m_wallet(w), m_could_reserve(false) {}
1250+
explicit WalletRescanReserver(CWallet& w) : m_wallet(w), m_could_reserve(false) {}
12511251

12521252
bool reserve()
12531253
{
12541254
assert(!m_could_reserve);
1255-
std::lock_guard<std::mutex> lock(m_wallet->mutexScanning);
1256-
if (m_wallet->fScanningWallet) {
1255+
std::lock_guard<std::mutex> lock(m_wallet.mutexScanning);
1256+
if (m_wallet.fScanningWallet) {
12571257
return false;
12581258
}
1259-
m_wallet->m_scanning_start = GetTimeMillis();
1260-
m_wallet->m_scanning_progress = 0;
1261-
m_wallet->fScanningWallet = true;
1259+
m_wallet.m_scanning_start = GetTimeMillis();
1260+
m_wallet.m_scanning_progress = 0;
1261+
m_wallet.fScanningWallet = true;
12621262
m_could_reserve = true;
12631263
return true;
12641264
}
12651265

12661266
bool isReserved() const
12671267
{
1268-
return (m_could_reserve && m_wallet->fScanningWallet);
1268+
return (m_could_reserve && m_wallet.fScanningWallet);
12691269
}
12701270

12711271
~WalletRescanReserver()
12721272
{
1273-
std::lock_guard<std::mutex> lock(m_wallet->mutexScanning);
1273+
std::lock_guard<std::mutex> lock(m_wallet.mutexScanning);
12741274
if (m_could_reserve) {
1275-
m_wallet->fScanningWallet = false;
1275+
m_wallet.fScanningWallet = false;
12761276
}
12771277
}
12781278
};

0 commit comments

Comments
 (0)