diff options
| author | Karl-Johan Alm <[email protected]> | 2017-08-16 17:19:02 +0900 |
|---|---|---|
| committer | Karl-Johan Alm <[email protected]> | 2017-09-04 14:48:06 +0900 |
| commit | 258d33b41a27917f59e3aee856d032a23cbb5b05 (patch) | |
| tree | 4afbc29daf715a289ca929447037a41ff2da80cc /src/validation.cpp | |
| parent | Merge #11198: [Qt] Fix display of package name on 'open config file' tooltip (diff) | |
| download | discoin-258d33b41a27917f59e3aee856d032a23cbb5b05.tar.xz discoin-258d33b41a27917f59e3aee856d032a23cbb5b05.zip | |
[mempool] Mark unaccepted txs present in mempool as 'already there'.
On startup, the wallets will start pumping wallet transactions into the mempool in a different thread while LoadMempool() is running.
This will sometimes result in transactions "failing" to be accepted into mempool, but only for the reason that they were already
put there by a wallet. The log message for mempool load would note this as a 'failure' to import, which was misleading; it should
instead mark it as the transaction already being in the mempool.
Diffstat (limited to 'src/validation.cpp')
| -rw-r--r-- | src/validation.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/validation.cpp b/src/validation.cpp index 3b9636839..dac979309 100644 --- a/src/validation.cpp +++ b/src/validation.cpp @@ -4278,8 +4278,9 @@ bool LoadMempool(void) } int64_t count = 0; - int64_t skipped = 0; + int64_t expired = 0; int64_t failed = 0; + int64_t already_there = 0; int64_t nNow = GetTime(); try { @@ -4309,10 +4310,18 @@ bool LoadMempool(void) if (state.IsValid()) { ++count; } else { - ++failed; + // mempool may contain the transaction already, e.g. from + // wallet(s) having loaded it while we were processing + // mempool transactions; consider these as valid, instead of + // failed, but mark them as 'already there' + if (mempool.exists(tx->GetHash())) { + ++already_there; + } else { + ++failed; + } } } else { - ++skipped; + ++expired; } if (ShutdownRequested()) return false; @@ -4328,7 +4337,7 @@ bool LoadMempool(void) return false; } - LogPrintf("Imported mempool transactions from disk: %i successes, %i failed, %i expired\n", count, failed, skipped); + LogPrintf("Imported mempool transactions from disk: %i succeeded, %i failed, %i expired, %i already there\n", count, failed, expired, already_there); return true; } |