Store only fully verified blocks in the cache

This commit is contained in:
SChernykh 2021-08-24 13:46:38 +02:00
parent 4837b4c863
commit 69533fd209
2 changed files with 7 additions and 3 deletions

View file

@ -120,7 +120,7 @@ void P2PServer::add_cached_block(const PoolBlock& block)
void P2PServer::store_in_cache(const PoolBlock& block)
{
if (m_cache) {
if (m_cache && block.m_verified && !block.m_invalid) {
m_cache->store(block);
}
}
@ -1323,8 +1323,6 @@ bool P2PServer::P2PClient::handle_incoming_block_async(PoolBlock* block)
return true;
}
server->store_in_cache(*block);
struct Work
{
uv_work_t req;

View file

@ -441,6 +441,9 @@ void SideChain::add_block(const PoolBlock& block)
", verified = " << (block.m_verified ? 1 : 0)
);
// Save it for faster syncing on the next p2pool start
m_pool->p2p_server()->store_in_cache(block);
PoolBlock* new_block = new PoolBlock(block);
MutexLock lock(m_sidechainLock);
@ -816,6 +819,9 @@ void SideChain::verify_loop(PoolBlock* block)
}
}
// Save it for faster syncing on the next p2pool start
m_pool->p2p_server()->store_in_cache(*block);
// Try to verify blocks on top of this one
for (size_t i = 1; i <= UNCLE_BLOCK_DEPTH; ++i) {
auto it = m_blocksByHeight.find(block->m_sidechainHeight + i);