-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Skip processing in SyncTransaction when chain is not synced yet #2920
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
With this patch applied old enough IS locks aren't removed. How to reproduce: send a tx, wait for it to be locked via IS, close the wallet before it's mined into a block, wait 6+ blocks (EDIT: a couple of blocks is enough too, just make sure that this tx was actually mined), open the wallet - tx stays locked via IS even after new blocks/chainlocks. |
Applies to CInstantSendManager and CChainLocksHandler. This fixes extremely high RAM usage on reindex and resync, which happens to many/all transactions being kept track of non-locked TXs (nonLockedTxs) and TXs per block (blockTxs).
130b577
to
a471bd6
Compare
@UdjinM6 good catch. I moved the check further down so that the necessary logic is not skipped. Force pushed the change. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ACK
* commit '05adda99fe09f9f6d99ce09e22ed89be3ddfcd27': (530 commits) Update release notes with latest commits (dashpay#2958) Only require valid collaterals for votes and triggers (dashpay#2947) (dashpay#2957) [v0.14.0.x] Fix off-by-one error in InstantSend mining info removal when disconnecting blocks (dashpay#2951) [v0.14.0.x] bump version to 0.14.0.1 and prepare release notes (dashpay#2952) Update release notes v14 (dashpay#2927) Set CLIENT_VERSION_IS_RELEASE to true (dashpay#2926) Update help text via gen-manpages.sh (dashpay#2929) 0.14 release notes draft (dashpay#2896) Fix duplicate `-instantsendnotify` invocation (dashpay#2925) Add blocks conflicting with ChainLocks to block index (dashpay#2923) Skip processing in SyncTransaction when chain is not synced yet (dashpay#2920) Set DIP0008 mainnet activation params (dashpay#2915) [0.14] Bump chainparams (dashpay#2910) Fix db leaks in LLMQ db (dashpay#2914) Fall back to ReadBlockFromDisk when blockTxs is not filled yet (dashpay#2908) Bump "keepOldConnections" by one for all LLMQ types (dashpay#2909) Print inputs on which we voted and quorums used for signing (dashpay#2907) Implement integration tests for DKG error handling (dashpay#2905) Implement zmq notifications for chainlocked blocks (dashpay#2899) Properly handle conflicts between ChainLocks and InstantSend (dashpay#2904) ... # Conflicts: # .travis.yml # COPYING # README.md # biblepay-docs/protocol-documentation.md # ci/matrix.sh # configure.ac # contrib/debian/examples/biblepay.conf # contrib/gitian-descriptors/gitian-linux.yml # contrib/gitian-descriptors/gitian-osx.yml # contrib/gitian-descriptors/gitian-win.yml # doc/README.md # doc/README_windows.txt # doc/dnsseed-policy.md # doc/files.md # doc/guide-startmany.md # doc/man/biblepay-cli.1 # doc/man/biblepay-qt.1 # doc/man/biblepay-tx.1 # doc/man/biblepayd.1 # doc/masternode-budget.md # doc/masternode_conf.md # doc/release-notes.md # qa/pull-tester/rpc-tests.py # qa/rpc-tests/autoix-mempool.py # qa/rpc-tests/dip3-deterministicmns.py # qa/rpc-tests/fundrawtransaction.py # qa/rpc-tests/maxblocksinflight.py # qa/rpc-tests/p2p-acceptblock.py # qa/rpc-tests/test_framework/comptool.py # qa/rpc-tests/test_framework/mininode.py # qa/rpc-tests/test_framework/test_framework.py # qa/rpc-tests/test_framework/util.py # qa/rpc-tests/wallet-hd.py # share/setup.nsi.in # src/Makefile.am # src/Makefile.bench.include # src/Makefile.qt.include # src/Makefile.qttest.include # src/Makefile.test.include # src/activemasternode.cpp # src/activemasternode.h # src/biblepayd.cpp # src/cachemap.h # src/cachemultimap.h # src/chainparams.cpp # src/clientversion.h # src/dsnotificationinterface.cpp # src/evo/deterministicmns.cpp # src/evo/providertx.cpp # src/evo/simplifiedmns.cpp # src/governance-classes.cpp # src/governance-classes.h # src/governance-object.cpp # src/governance-object.h # src/governance-vote.cpp # src/governance.cpp # src/governance.h # src/hash.h # src/hdchain.cpp # src/hdchain.h # src/init.cpp # src/instantx.cpp # src/instantx.h # src/keepass.cpp # src/keepass.h # src/llmq/quorums_blockprocessor.cpp # src/llmq/quorums_dummydkg.cpp # src/llmq/quorums_dummydkg.h # src/llmq/quorums_init.cpp # src/llmq/quorums_init.h # src/llmq/quorums_utils.cpp # src/llmq/quorums_utils.h # src/masternode-payments.cpp # src/masternode-payments.h # src/masternode-sync.cpp # src/masternode-sync.h # src/masternode.cpp # src/masternode.h # src/masternodeconfig.cpp # src/masternodeconfig.h # src/masternodeman.cpp # src/masternodeman.h # src/messagesigner.cpp # src/messagesigner.h # src/miner.cpp # src/net.cpp # src/net_processing.cpp # src/netfulfilledman.cpp # src/netfulfilledman.h # src/privatesend-client.cpp # src/privatesend-client.h # src/privatesend-server.cpp # src/privatesend-server.h # src/privatesend.cpp # src/privatesend.h # src/qt/askpassphrasedialog.cpp # src/qt/biblepay.cpp # src/qt/bitcoinaddressvalidator.cpp # src/qt/bitcoingui.cpp # src/qt/bitcoinunits.cpp # src/qt/bitcoinunits.h # src/qt/clientmodel.cpp # src/qt/coincontroldialog.cpp # src/qt/dashstrings.cpp # src/qt/editaddressdialog.cpp # src/qt/forms/intro.ui # src/qt/forms/masternodelist.ui # src/qt/guiconstants.h # src/qt/guiutil.cpp # src/qt/intro.cpp # src/qt/locale/biblepay_ar.ts # src/qt/locale/biblepay_bg.ts # src/qt/locale/biblepay_de.ts # src/qt/locale/biblepay_en.ts # src/qt/locale/biblepay_es.ts # src/qt/locale/biblepay_fi.ts # src/qt/locale/biblepay_fr.ts # src/qt/locale/biblepay_it.ts # src/qt/locale/biblepay_ja.ts # src/qt/locale/biblepay_ko.ts # src/qt/locale/biblepay_nl.ts # src/qt/locale/biblepay_pl.ts # src/qt/locale/biblepay_pt.ts # src/qt/locale/biblepay_ru.ts # src/qt/locale/biblepay_sk.ts # src/qt/locale/biblepay_th.ts # src/qt/locale/biblepay_tr.ts # src/qt/locale/biblepay_vi.ts # src/qt/locale/biblepay_zh_CN.ts # src/qt/locale/biblepay_zh_TW.ts # src/qt/networkstyle.h # src/qt/openuridialog.cpp # src/qt/optionsdialog.cpp # src/qt/optionsmodel.cpp # src/qt/overviewpage.cpp # src/qt/res/images/light/about.png # src/qt/res/images/light/drkblue_walletFrame_bg.png # src/qt/rpcconsole.cpp # src/qt/sendcoinsdialog.cpp # src/qt/sendcoinsentry.cpp # src/qt/splashscreen.cpp # src/qt/transactiondesc.cpp # src/qt/transactionrecord.cpp # src/qt/utilitydialog.cpp # src/qt/walletmodel.cpp # src/rpc/blockchain.cpp # src/rpc/client.cpp # src/rpc/governance.cpp # src/rpc/masternode.cpp # src/rpc/mining.cpp # src/rpc/misc.cpp # src/rpc/net.cpp # src/rpc/rawtransaction.cpp # src/rpc/rpcevo.cpp # src/rpc/server.cpp # src/spork.cpp # src/spork.h # src/test/bip39_tests.cpp # src/test/cachemap_tests.cpp # src/test/cachemultimap_tests.cpp # src/test/governance_validators_tests.cpp # src/test/miner_tests.cpp # src/test/ratecheck_tests.cpp # src/test/test_biblepay.h # src/uint256.h # src/util.cpp # src/util.h # src/validation.cpp # src/validation.h # src/version.h # src/wallet/rpcdump.cpp # src/wallet/rpcwallet.cpp # src/wallet/wallet.cpp # src/wallet/wallet.h # src/wallet/walletdb.cpp
Applies to CInstantSendManager and CChainLocksHandler. This fixes extremely
high RAM usage on reindex and resync, which happens due to many/all transactions
being kept track of non-locked TXs (nonLockedTxs) and TXs per
block (blockTxs).
Targeted for 0.14.