|
|
|
@ -436,8 +436,14 @@ namespace cryptonote
|
|
|
|
|
void tx_memory_pool::prune(size_t bytes)
|
|
|
|
|
{
|
|
|
|
|
CRITICAL_REGION_LOCAL(m_transactions_lock);
|
|
|
|
|
|
|
|
|
|
// Nothing to do if already empty
|
|
|
|
|
if (m_txs_by_fee_and_receive_time.empty())
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
if (bytes == 0)
|
|
|
|
|
bytes = m_txpool_max_weight;
|
|
|
|
|
|
|
|
|
|
CRITICAL_REGION_LOCAL1(m_blockchain);
|
|
|
|
|
LockedTXN lock(m_blockchain.get_db());
|
|
|
|
|
bool changed = false;
|
|
|
|
@ -482,8 +488,13 @@ namespace cryptonote
|
|
|
|
|
reduce_txpool_weight(meta.weight);
|
|
|
|
|
remove_transaction_keyimages(tx, txid);
|
|
|
|
|
MINFO("Pruned tx " << txid << " from txpool: weight: " << meta.weight << ", fee/byte: " << it->first.first);
|
|
|
|
|
|
|
|
|
|
auto it_prev = it;
|
|
|
|
|
--it_prev;
|
|
|
|
|
|
|
|
|
|
remove_tx_from_transient_lists(it, txid, !meta.matches(relay_category::broadcasted));
|
|
|
|
|
it--;
|
|
|
|
|
it = it_prev;
|
|
|
|
|
|
|
|
|
|
changed = true;
|
|
|
|
|
}
|
|
|
|
|
catch (const std::exception &e)
|
|
|
|
@ -1828,7 +1839,7 @@ namespace cryptonote
|
|
|
|
|
auto sorted_it = find_tx_in_sorted_container(txid);
|
|
|
|
|
if (sorted_it == m_txs_by_fee_and_receive_time.end())
|
|
|
|
|
{
|
|
|
|
|
MERROR("Re-adding tx " << txid << " to tx pool, but it was not found in the sorted txs container");
|
|
|
|
|
MDEBUG("Re-adding tx " << txid << " to tx pool, but it was not found in the sorted txs container");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|