mirror of
https://codeberg.org/anoncontributorxmr/monero.git
synced 2024-11-23 10:37:37 -07:00
Move update_checkpoints() to a later stage
update_checkpoints() makes a few DNS requests and can take up to 20-30 seconds to complete (3-6 seconds on average). It is currently called from core::handle_incoming_block() which holds m_incoming_tx_lock, so it blocks all incoming transactions and blocks processing while update_checkpoints() is running. This PR moves it to until after a new block has been processed and relayed, to avoid full monerod locking.
This commit is contained in:
parent
7cbae6ca98
commit
802c4bb0e4
@ -1656,10 +1656,6 @@ namespace cryptonote
|
|||||||
if (((size_t)-1) <= 0xffffffff && block_blob.size() >= 0x3fffffff)
|
if (((size_t)-1) <= 0xffffffff && block_blob.size() >= 0x3fffffff)
|
||||||
MWARNING("This block's size is " << block_blob.size() << ", closing on the 32 bit limit");
|
MWARNING("This block's size is " << block_blob.size() << ", closing on the 32 bit limit");
|
||||||
|
|
||||||
// load json & DNS checkpoints every 10min/hour respectively,
|
|
||||||
// and verify them with respect to what blocks we already have
|
|
||||||
CHECK_AND_ASSERT_MES(update_checkpoints(), false, "One or more checkpoints loaded from json or dns conflicted with existing checkpoints.");
|
|
||||||
|
|
||||||
block lb;
|
block lb;
|
||||||
if (!b)
|
if (!b)
|
||||||
{
|
{
|
||||||
|
@ -537,6 +537,10 @@ namespace cryptonote
|
|||||||
MLOG_PEER_STATE("requesting chain");
|
MLOG_PEER_STATE("requesting chain");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// load json & DNS checkpoints every 10min/hour respectively,
|
||||||
|
// and verify them with respect to what blocks we already have
|
||||||
|
CHECK_AND_ASSERT_MES(m_core.update_checkpoints(), 1, "One or more checkpoints loaded from json or dns conflicted with existing checkpoints.");
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------------------------------------
|
||||||
@ -819,6 +823,10 @@ namespace cryptonote
|
|||||||
post_notify<NOTIFY_REQUEST_CHAIN>(r, context);
|
post_notify<NOTIFY_REQUEST_CHAIN>(r, context);
|
||||||
MLOG_PEER_STATE("requesting chain");
|
MLOG_PEER_STATE("requesting chain");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// load json & DNS checkpoints every 10min/hour respectively,
|
||||||
|
// and verify them with respect to what blocks we already have
|
||||||
|
CHECK_AND_ASSERT_MES(m_core.update_checkpoints(), 1, "One or more checkpoints loaded from json or dns conflicted with existing checkpoints.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -90,6 +90,7 @@ namespace tests
|
|||||||
bool get_test_drop_download_height() {return true;}
|
bool get_test_drop_download_height() {return true;}
|
||||||
bool prepare_handle_incoming_blocks(const std::vector<cryptonote::block_complete_entry> &blocks_entry, std::vector<cryptonote::block> &blocks) { return true; }
|
bool prepare_handle_incoming_blocks(const std::vector<cryptonote::block_complete_entry> &blocks_entry, std::vector<cryptonote::block> &blocks) { return true; }
|
||||||
bool cleanup_handle_incoming_blocks(bool force_sync = false) { return true; }
|
bool cleanup_handle_incoming_blocks(bool force_sync = false) { return true; }
|
||||||
|
bool update_checkpoints(const bool skip_dns = false) { return true; }
|
||||||
uint64_t get_target_blockchain_height() const { return 1; }
|
uint64_t get_target_blockchain_height() const { return 1; }
|
||||||
size_t get_block_sync_size(uint64_t height) const { return BLOCKS_SYNCHRONIZING_DEFAULT_COUNT; }
|
size_t get_block_sync_size(uint64_t height) const { return BLOCKS_SYNCHRONIZING_DEFAULT_COUNT; }
|
||||||
virtual void on_transactions_relayed(epee::span<const cryptonote::blobdata> tx_blobs, cryptonote::relay_method tx_relay) {}
|
virtual void on_transactions_relayed(epee::span<const cryptonote::blobdata> tx_blobs, cryptonote::relay_method tx_relay) {}
|
||||||
|
@ -72,6 +72,7 @@ public:
|
|||||||
bool get_test_drop_download_height() const {return true;}
|
bool get_test_drop_download_height() const {return true;}
|
||||||
bool prepare_handle_incoming_blocks(const std::vector<cryptonote::block_complete_entry> &blocks_entry, std::vector<cryptonote::block> &blocks) { return true; }
|
bool prepare_handle_incoming_blocks(const std::vector<cryptonote::block_complete_entry> &blocks_entry, std::vector<cryptonote::block> &blocks) { return true; }
|
||||||
bool cleanup_handle_incoming_blocks(bool force_sync = false) { return true; }
|
bool cleanup_handle_incoming_blocks(bool force_sync = false) { return true; }
|
||||||
|
bool update_checkpoints(const bool skip_dns = false) { return true; }
|
||||||
uint64_t get_target_blockchain_height() const { return 1; }
|
uint64_t get_target_blockchain_height() const { return 1; }
|
||||||
size_t get_block_sync_size(uint64_t height) const { return BLOCKS_SYNCHRONIZING_DEFAULT_COUNT; }
|
size_t get_block_sync_size(uint64_t height) const { return BLOCKS_SYNCHRONIZING_DEFAULT_COUNT; }
|
||||||
virtual void on_transactions_relayed(epee::span<const cryptonote::blobdata> tx_blobs, cryptonote::relay_method tx_relay) {}
|
virtual void on_transactions_relayed(epee::span<const cryptonote::blobdata> tx_blobs, cryptonote::relay_method tx_relay) {}
|
||||||
|
Loading…
Reference in New Issue
Block a user