Skip to content

Commit 7c0773a

Browse files
committed
Bugfix: RPC/blockchain: Immediately apply new limit set by maxmempool method
1 parent 5670ddd commit 7c0773a

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

src/rpc/mempool.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include <chainparams.h>
1111
#include <core_io.h>
1212
#include <kernel/mempool_entry.h>
13+
#include <node/context.h>
1314
#include <node/mempool_persist_args.h>
1415
#include <node/types.h>
1516
#include <policy/rbf.h>
@@ -20,10 +21,12 @@
2021
#include <rpc/util.h>
2122
#include <txmempool.h>
2223
#include <univalue.h>
24+
#include <util/any.h>
2325
#include <util/fs.h>
2426
#include <util/moneystr.h>
2527
#include <util/strencodings.h>
2628
#include <util/time.h>
29+
#include <validation.h>
2730

2831
#include <utility>
2932

@@ -392,13 +395,19 @@ static RPCHelpMan maxmempool()
392395
int64_t nMempoolSizeMax = nSize * 1000000;
393396

394397
CTxMemPool& mempool = EnsureAnyMemPool(request.context);
395-
LOCK(mempool.cs);
398+
LOCK2(cs_main, mempool.cs);
396399

397400
int64_t nMempoolSizeMin = maxmempoolMinimumBytes(mempool.m_opts.limits.descendant_size_vbytes);
398401
if (nMempoolSizeMax < 0 || nMempoolSizeMax < nMempoolSizeMin)
399402
throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("MaxMempool size %d is too small", nSize));
400403
mempool.m_opts.max_size_bytes = nSize;
401404

405+
auto node_context = util::AnyPtr<NodeContext>(request.context);
406+
if (node_context && node_context->chainman) {
407+
Chainstate& active_chainstate = node_context->chainman->ActiveChainstate();
408+
LimitMempoolSize(mempool, active_chainstate.CoinsTip());
409+
}
410+
402411
return NullUniValue;
403412
}
404413
};

0 commit comments

Comments
 (0)