0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-03-09 15:37:00 -04:00
bitcoin-core/src/wallet
Wladimir J. van der Laan 2afdc29403
Merge #12507: Interrupt rescan on shutdown request
c4fda76 wallet: Interrupt rescan on shutdown request (João Barbosa)

Pull request description:

  Fixes #10987.

  Here are the steps to test the feature:

  1. start bitcoind, generate a couple of transactions and then stop:
  ```
  bitcoind -regtest -printtoconsole
  bitcoin-cli -regtest generate 100
  ```
  2. apply the following patch
  ```diff
  diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp
  index 2478d67ce..8f8cea40c 100644
  --- a/src/wallet/wallet.cpp
  +++ b/src/wallet/wallet.cpp
  @@ -1671,6 +1671,7 @@ CBlockIndex* CWallet::ScanForWalletTransactions(CBlockIndex* pindexStart, CBlock
           }
           while (pindex && !fAbortRescan && !ShutdownRequested())
           {
  +            MilliSleep(500);
               if (pindex->nHeight % 100 == 0 && dProgressTip - dProgressStart > 0.0) {
                   double gvp = 0;
                   {
  ```
  3. start bitcoind with rescan flag, interrupt with CTRL+C and the output should look like:
  ```
  bitcoind -regtest -printtoconsole -rescan
  ...
  ^C2018-02-22 01:00:55 AddToWallet e8bfb4501b630ad2acb91e88ab0112a779766536d2c564b04faae45ae90e18f7
  2018-02-22 01:00:55 Rescan interrupted by shutdown request at block 5. Progress=1.000000
  2018-02-22 01:00:55  rescan                 1774ms
  2018-02-22 01:00:55 setKeyPool.size() = 1995
  2018-02-22 01:00:55 mapWallet.size() = 10145
  2018-02-22 01:00:55 mapAddressBook.size() = 3
  2018-02-22 01:00:55 Shutdown: In progress...
  2018-02-22 01:00:55 scheduler thread interrupt
  2018-02-22 01:00:55 Shutdown: done
  ```

Tree-SHA512: f9bebe2cdacf0359b6cbfcbc48ac2818a3ae7aa7822ff0c2c0de4ca2fff7c88493380b74a1c5ff2ce1de01fe605b0e5ef3576f124ea9cff8ef25a9e762477b92
2018-05-03 11:27:36 +02:00
..
test wallet: Add AddWallet, RemoveWallet, GetWallet and GetWallets 2018-04-18 22:07:33 +01:00
coincontrol.h wallet: Make fee settings non-static members 2018-04-23 10:49:21 -04:00
coinselection.cpp Add missing newlines to LogPrint debug logging 2018-05-02 15:14:04 +02:00
coinselection.h Fix missing or inconsistent include guards 2018-03-22 16:23:04 +01:00
crypter.cpp Merge #11403: SegWit wallet support 2018-01-10 20:55:41 -10:00
crypter.h tests: Avoid test suite name collision in wallet crypto_tests 2018-04-06 16:29:14 +02:00
db.cpp Merge #11851: scripted-diff: Rename wallet database classes 2018-04-09 19:29:54 +02:00
db.h scripted-diff: Rename wallet database classes 2018-04-07 11:48:27 -05:00
feebumper.cpp wallet: Make fee settings non-static members 2018-04-23 10:49:21 -04:00
feebumper.h feebumper: Use PreconditionChecks to determine bump eligibility 2018-01-29 18:31:33 -05:00
fees.cpp wallet: Make fee settings non-static members 2018-04-23 10:49:21 -04:00
fees.h wallet: Make fee settings non-static members 2018-04-23 10:49:21 -04:00
init.cpp Merge #12909: wallet: Make fee settings to be non-static members 2018-04-24 16:37:30 +02:00
rpcdump.cpp Merge #13090: Remove Safe mode (achow101) 2018-04-27 17:03:44 +02:00
rpcwallet.cpp Remove Safe mode 2018-04-26 15:33:11 +02:00
rpcwallet.h Split signrawtransaction into wallet and non-wallet 2018-02-17 11:42:00 -05:00
wallet.cpp Merge #12507: Interrupt rescan on shutdown request 2018-05-03 11:27:36 +02:00
wallet.h scripted-diff: Rename SetBestChain callback ChainStateFlushed 2018-04-27 14:44:22 -04:00
walletdb.cpp wallet: Add AddWallet, RemoveWallet, GetWallet and GetWallets 2018-04-18 22:07:33 +01:00
walletdb.h [wallet] [rpc] introduce 'label' API for wallet 2018-04-10 19:27:22 -04:00
walletutil.cpp Don't allow relative -walletdir paths 2018-01-18 15:09:27 -05:00
walletutil.h Fix missing or inconsistent include guards 2018-03-22 16:23:04 +01:00