mirror of
https://github.com/monero-project/monero.git
synced 2025-07-22 09:40:39 -04:00
Merge pull request #1506
3ff54bdd
Check for correct thread before ending batch transaction (Howard Chu)eaf8470b
Must wait for previous batch to finish before starting new one (Howard Chu)c903c554
Don't cache block height, always get from DB (Howard Chu)eb1fb601
Tweak default db-sync-mode to fast:async:1 (Howard Chu)0693cff9
Use batch transactions when syncing (Howard Chu)
This commit is contained in:
commit
65e33b1bc5
9 changed files with 71 additions and 33 deletions
|
@ -3381,9 +3381,10 @@ bool Blockchain::add_new_block(const block& bl_, block_verification_context& bvc
|
|||
void Blockchain::check_against_checkpoints(const checkpoints& points, bool enforce)
|
||||
{
|
||||
const auto& pts = points.get_points();
|
||||
bool stop_batch;
|
||||
|
||||
CRITICAL_REGION_LOCAL(m_blockchain_lock);
|
||||
m_db->batch_start();
|
||||
stop_batch = m_db->batch_start();
|
||||
for (const auto& pt : pts)
|
||||
{
|
||||
// if the checkpoint is for a block we don't have yet, move on
|
||||
|
@ -3407,7 +3408,8 @@ void Blockchain::check_against_checkpoints(const checkpoints& points, bool enfor
|
|||
}
|
||||
}
|
||||
}
|
||||
m_db->batch_stop();
|
||||
if (stop_batch)
|
||||
m_db->batch_stop();
|
||||
}
|
||||
//------------------------------------------------------------------
|
||||
// returns false if any of the checkpoints loading returns false.
|
||||
|
@ -3481,6 +3483,7 @@ bool Blockchain::cleanup_handle_incoming_blocks(bool force_sync)
|
|||
CRITICAL_REGION_LOCAL(m_blockchain_lock);
|
||||
TIME_MEASURE_START(t1);
|
||||
|
||||
m_db->batch_stop();
|
||||
if (m_sync_counter > 0)
|
||||
{
|
||||
if (force_sync)
|
||||
|
@ -3545,11 +3548,18 @@ bool Blockchain::prepare_handle_incoming_blocks(const std::list<block_complete_e
|
|||
{
|
||||
LOG_PRINT_YELLOW("Blockchain::" << __func__, LOG_LEVEL_3);
|
||||
TIME_MEASURE_START(prepare);
|
||||
bool stop_batch;
|
||||
CRITICAL_REGION_LOCAL(m_blockchain_lock);
|
||||
|
||||
if(blocks_entry.size() == 0)
|
||||
return false;
|
||||
|
||||
while (!(stop_batch = m_db->batch_start(blocks_entry.size()))) {
|
||||
m_blockchain_lock.unlock();
|
||||
epee::misc_utils::sleep_no_w(1000);
|
||||
m_blockchain_lock.lock();
|
||||
}
|
||||
|
||||
if ((m_db->height() + blocks_entry.size()) < m_blocks_hash_check.size())
|
||||
return true;
|
||||
|
||||
|
|
|
@ -312,9 +312,9 @@ namespace cryptonote
|
|||
LOG_PRINT_L0("Loading blockchain from folder " << folder.string() << " ...");
|
||||
|
||||
const std::string filename = folder.string();
|
||||
// temporarily default to fastest:async:1000
|
||||
// default to fast:async:1
|
||||
blockchain_db_sync_mode sync_mode = db_async;
|
||||
uint64_t blocks_per_sync = 1000;
|
||||
uint64_t blocks_per_sync = 1;
|
||||
|
||||
try
|
||||
{
|
||||
|
@ -327,12 +327,12 @@ namespace cryptonote
|
|||
for(const auto &option : options)
|
||||
LOG_PRINT_L0("option: " << option);
|
||||
|
||||
// default to fast:async:1000
|
||||
// default to fast:async:1
|
||||
uint64_t DEFAULT_FLAGS = DBS_FAST_MODE;
|
||||
|
||||
if(options.size() == 0)
|
||||
{
|
||||
// temporarily default to fastest:async:1000
|
||||
// default to fast:async:1
|
||||
db_flags = DEFAULT_FLAGS;
|
||||
}
|
||||
|
||||
|
@ -348,7 +348,10 @@ namespace cryptonote
|
|||
else if(options[0] == "fast")
|
||||
db_flags = DBS_FAST_MODE;
|
||||
else if(options[0] == "fastest")
|
||||
{
|
||||
db_flags = DBS_FASTEST_MODE;
|
||||
blocks_per_sync = 1000; // default to fastest:async:1000
|
||||
}
|
||||
else
|
||||
db_flags = DEFAULT_FLAGS;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue