5

I read in my debug file:

Imported mempool transactions from disk: 
143751 successes, 235 failed, 1 expired

What does failed and expired mean in this context? How can I fix that?

1 Answer 1

5

You can't, and you don't have to.

Since Bitcoin Core 0.14.0, the mempool is saved to disk at shutdown, and read again in the background at startup. This helps in quickly establishing a realistic mempool to help with fee estimation and compact block relay.

However, time likely has passed since the mempool was saved and when the import happens. New blocks may have been created since, which likely contain many of the transactions that are being imported. Those will not be acceptable again to your mempool, and they will be listed as failed. Other reasons may include feerate changes, or conflicting transactions that were mined. Since the mempool import happens in the background, some part of it likely gets imported after processing the blocks with whom those transactions conflict.

Transactions that are older than the mempool expiration setting (default: 14 days) don't get imported either, and get listed as expired.

2
  • 1
    I've added information on 'expired'. I hope I guessed correctly. ;)
    – Murch
    May 27, 2017 at 20:11
  • Two slightly esoteric possiblities: 1. There was a reorg, and transactions have been added back into the mempool, temporarily breaching the descendant / ancestor limits. When the node then restarts, some txns breaching the limits will be dropped. 2. There was a CPFP carveout, leading to a cluster of 26 transactions, and then the node restarts. Since the carveout is only possible with a specific order of transaction arrival and the txns could be loaded in a different order, a transaction could be dropped and marked as failed.
    – Lightlike
    Nov 26, 2023 at 0:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.