mirror of
https://github.com/monero-project/monero.git
synced 2024-12-27 09:49:25 -05:00
core: warn when free disk space is low
This commit is contained in:
parent
af448d3883
commit
43f27c7d43
@ -1269,6 +1269,7 @@ namespace cryptonote
|
|||||||
m_fork_moaner.do_call(boost::bind(&core::check_fork_time, this));
|
m_fork_moaner.do_call(boost::bind(&core::check_fork_time, this));
|
||||||
m_txpool_auto_relayer.do_call(boost::bind(&core::relay_txpool_transactions, this));
|
m_txpool_auto_relayer.do_call(boost::bind(&core::relay_txpool_transactions, this));
|
||||||
m_check_updates_interval.do_call(boost::bind(&core::check_updates, this));
|
m_check_updates_interval.do_call(boost::bind(&core::check_updates, this));
|
||||||
|
m_check_disk_space_interval.do_call(boost::bind(&core::check_disk_space, this));
|
||||||
m_miner.on_idle();
|
m_miner.on_idle();
|
||||||
m_mempool.on_idle();
|
m_mempool.on_idle();
|
||||||
return true;
|
return true;
|
||||||
@ -1400,6 +1401,17 @@ namespace cryptonote
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
//-----------------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------------
|
||||||
|
bool core::check_disk_space()
|
||||||
|
{
|
||||||
|
uint64_t free_space = get_free_space();
|
||||||
|
if (free_space < 1ull * 1024 * 1024 * 1024) // 1 GB
|
||||||
|
{
|
||||||
|
const el::Level level = el::Level::Warning;
|
||||||
|
MCLOG_RED(level, "global", "Free space is below 1 GB on " << m_config_folder);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------------------------
|
||||||
void core::set_target_blockchain_height(uint64_t target_blockchain_height)
|
void core::set_target_blockchain_height(uint64_t target_blockchain_height)
|
||||||
{
|
{
|
||||||
m_target_blockchain_height = target_blockchain_height;
|
m_target_blockchain_height = target_blockchain_height;
|
||||||
@ -1415,6 +1427,13 @@ namespace cryptonote
|
|||||||
return get_blockchain_storage().prevalidate_block_hashes(height, hashes);
|
return get_blockchain_storage().prevalidate_block_hashes(height, hashes);
|
||||||
}
|
}
|
||||||
//-----------------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------------
|
||||||
|
uint64_t core::get_free_space() const
|
||||||
|
{
|
||||||
|
boost::filesystem::path path(m_config_folder);
|
||||||
|
boost::filesystem::space_info si = boost::filesystem::space(path);
|
||||||
|
return si.available;
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------------------------
|
||||||
std::time_t core::get_start_time() const
|
std::time_t core::get_start_time() const
|
||||||
{
|
{
|
||||||
return start_time;
|
return start_time;
|
||||||
|
@ -757,6 +757,13 @@ namespace cryptonote
|
|||||||
*/
|
*/
|
||||||
uint64_t prevalidate_block_hashes(uint64_t height, const std::list<crypto::hash> &hashes);
|
uint64_t prevalidate_block_hashes(uint64_t height, const std::list<crypto::hash> &hashes);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief get free disk space on the blockchain partition
|
||||||
|
*
|
||||||
|
* @return free space in bytes
|
||||||
|
*/
|
||||||
|
uint64_t get_free_space() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -916,6 +923,13 @@ namespace cryptonote
|
|||||||
*/
|
*/
|
||||||
bool check_updates();
|
bool check_updates();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief checks free disk space
|
||||||
|
*
|
||||||
|
* @return true on success, false otherwise
|
||||||
|
*/
|
||||||
|
bool check_disk_space();
|
||||||
|
|
||||||
bool m_test_drop_download = true; //!< whether or not to drop incoming blocks (for testing)
|
bool m_test_drop_download = true; //!< whether or not to drop incoming blocks (for testing)
|
||||||
|
|
||||||
uint64_t m_test_drop_download_height = 0; //!< height under which to drop incoming blocks, if doing so
|
uint64_t m_test_drop_download_height = 0; //!< height under which to drop incoming blocks, if doing so
|
||||||
@ -939,6 +953,7 @@ namespace cryptonote
|
|||||||
epee::math_helper::once_a_time_seconds<60*60*2, true> m_fork_moaner; //!< interval for checking HardFork status
|
epee::math_helper::once_a_time_seconds<60*60*2, true> m_fork_moaner; //!< interval for checking HardFork status
|
||||||
epee::math_helper::once_a_time_seconds<60*2, false> m_txpool_auto_relayer; //!< interval for checking re-relaying txpool transactions
|
epee::math_helper::once_a_time_seconds<60*2, false> m_txpool_auto_relayer; //!< interval for checking re-relaying txpool transactions
|
||||||
epee::math_helper::once_a_time_seconds<60*60*12, true> m_check_updates_interval; //!< interval for checking for new versions
|
epee::math_helper::once_a_time_seconds<60*60*12, true> m_check_updates_interval; //!< interval for checking for new versions
|
||||||
|
epee::math_helper::once_a_time_seconds<60*10, true> m_check_disk_space_interval; //!< interval for checking for disk space
|
||||||
|
|
||||||
std::atomic<bool> m_starter_message_showed; //!< has the "daemon will sync now" message been shown?
|
std::atomic<bool> m_starter_message_showed; //!< has the "daemon will sync now" message been shown?
|
||||||
|
|
||||||
|
@ -157,6 +157,7 @@ namespace cryptonote
|
|||||||
res.block_size_limit = m_core.get_blockchain_storage().get_current_cumulative_blocksize_limit();
|
res.block_size_limit = m_core.get_blockchain_storage().get_current_cumulative_blocksize_limit();
|
||||||
res.status = CORE_RPC_STATUS_OK;
|
res.status = CORE_RPC_STATUS_OK;
|
||||||
res.start_time = (uint64_t)m_core.get_start_time();
|
res.start_time = (uint64_t)m_core.get_start_time();
|
||||||
|
res.free_space = m_restricted ? std::numeric_limits<uint64_t>::max() : m_core.get_free_space();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------------------------------------------
|
||||||
@ -1335,6 +1336,7 @@ namespace cryptonote
|
|||||||
res.block_size_limit = m_core.get_blockchain_storage().get_current_cumulative_blocksize_limit();
|
res.block_size_limit = m_core.get_blockchain_storage().get_current_cumulative_blocksize_limit();
|
||||||
res.status = CORE_RPC_STATUS_OK;
|
res.status = CORE_RPC_STATUS_OK;
|
||||||
res.start_time = (uint64_t)m_core.get_start_time();
|
res.start_time = (uint64_t)m_core.get_start_time();
|
||||||
|
res.free_space = m_restricted ? std::numeric_limits<uint64_t>::max() : m_core.get_free_space();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -49,7 +49,7 @@ namespace cryptonote
|
|||||||
// advance which version they will stop working with
|
// advance which version they will stop working with
|
||||||
// Don't go over 32767 for any of these
|
// Don't go over 32767 for any of these
|
||||||
#define CORE_RPC_VERSION_MAJOR 1
|
#define CORE_RPC_VERSION_MAJOR 1
|
||||||
#define CORE_RPC_VERSION_MINOR 15
|
#define CORE_RPC_VERSION_MINOR 16
|
||||||
#define MAKE_CORE_RPC_VERSION(major,minor) (((major)<<16)|(minor))
|
#define MAKE_CORE_RPC_VERSION(major,minor) (((major)<<16)|(minor))
|
||||||
#define CORE_RPC_VERSION MAKE_CORE_RPC_VERSION(CORE_RPC_VERSION_MAJOR, CORE_RPC_VERSION_MINOR)
|
#define CORE_RPC_VERSION MAKE_CORE_RPC_VERSION(CORE_RPC_VERSION_MAJOR, CORE_RPC_VERSION_MINOR)
|
||||||
|
|
||||||
@ -924,6 +924,7 @@ namespace cryptonote
|
|||||||
uint64_t cumulative_difficulty;
|
uint64_t cumulative_difficulty;
|
||||||
uint64_t block_size_limit;
|
uint64_t block_size_limit;
|
||||||
uint64_t start_time;
|
uint64_t start_time;
|
||||||
|
uint64_t free_space;
|
||||||
|
|
||||||
BEGIN_KV_SERIALIZE_MAP()
|
BEGIN_KV_SERIALIZE_MAP()
|
||||||
KV_SERIALIZE(status)
|
KV_SERIALIZE(status)
|
||||||
@ -943,6 +944,7 @@ namespace cryptonote
|
|||||||
KV_SERIALIZE(cumulative_difficulty)
|
KV_SERIALIZE(cumulative_difficulty)
|
||||||
KV_SERIALIZE(block_size_limit)
|
KV_SERIALIZE(block_size_limit)
|
||||||
KV_SERIALIZE(start_time)
|
KV_SERIALIZE(start_time)
|
||||||
|
KV_SERIALIZE(free_space)
|
||||||
END_KV_SERIALIZE_MAP()
|
END_KV_SERIALIZE_MAP()
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user