Better handle 32-bit platforms by limitting database size

Experimentally, setting the database size to 2GB didn't work.
These values are quite arbitrary, and should probably be settings or
automatically adjusted.
This commit is contained in:
Mayeul Cantan 2022-07-19 13:42:28 +02:00
parent eb33c9a225
commit 702d7e620f

View file

@ -46,10 +46,16 @@ static const std::string_view OLM_ACCOUNT_KEY("olm_account");
static const std::string_view CACHE_FORMAT_VERSION_KEY("cache_format_version"); static const std::string_view CACHE_FORMAT_VERSION_KEY("cache_format_version");
static const std::string_view CURRENT_ONLINE_BACKUP_VERSION("current_online_backup_version"); static const std::string_view CURRENT_ONLINE_BACKUP_VERSION("current_online_backup_version");
constexpr auto MAX_DBS = 32384UL;
#if Q_PROCESSOR_WORDSIZE == 8 // 64-bit
constexpr auto DB_SIZE = 32ULL * 1024ULL * 1024ULL * 1024ULL; // 32 GB
constexpr size_t MAX_RESTORED_MESSAGES = 30'000; constexpr size_t MAX_RESTORED_MESSAGES = 30'000;
#elif Q_PROCESSOR_WORDSIZE == 4 // 32-bit address space limits mmaps
constexpr auto DB_SIZE = 32ULL * 1024ULL * 1024ULL * 1024ULL; // 32 GB constexpr auto DB_SIZE = 1ULL * 1024ULL * 1024ULL * 1024ULL; // 1 GB
constexpr auto MAX_DBS = 32384UL; constexpr size_t MAX_RESTORED_MESSAGES = 5'000;
#else
#error unknown word size on target CPU
#endif
constexpr auto BATCH_SIZE = 100; constexpr auto BATCH_SIZE = 100;
//! Cache databases and their format. //! Cache databases and their format.