diff options
author | Dwayne Boone <dwayne@zeroc.com> | 2015-11-05 12:55:25 -0330 |
---|---|---|
committer | Dwayne Boone <dwayne@zeroc.com> | 2015-11-05 12:55:25 -0330 |
commit | a548114af8698b6ede6d3815ff51c9e4547cea29 (patch) | |
tree | a3bac345625ed559e3d361ddb12e0ab76f746fc5 /cpp/src/IceDB | |
parent | IceGrid: catch LMDB exceptions on Database creation (diff) | |
download | ice-a548114af8698b6ede6d3815ff51c9e4547cea29.tar.bz2 ice-a548114af8698b6ede6d3815ff51c9e4547cea29.tar.xz ice-a548114af8698b6ede6d3815ff51c9e4547cea29.zip |
Added properties to set the database map size for IceGrid/IceStorm
Diffstat (limited to 'cpp/src/IceDB')
-rw-r--r-- | cpp/src/IceDB/IceDB.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/cpp/src/IceDB/IceDB.cpp b/cpp/src/IceDB/IceDB.cpp index 78cb4b4dfc7..6db634ea9a3 100644 --- a/cpp/src/IceDB/IceDB.cpp +++ b/cpp/src/IceDB/IceDB.cpp @@ -159,6 +159,20 @@ Env::Env(const string& path, MDB_dbi maxDbs, size_t mapSize, unsigned int maxRea if(mapSize != 0) { + // Make sure the map size is a multiple of the page size + size_t pageSize; +#ifdef _WIN32 + SYSTEM_INFO si; + GetSystemInfo(&si); + pageSize = si.dwPageSize; +#else + pageSize = sysconf(_SC_PAGESIZE); +#endif + size_t remainder = mapSize % pageSize; + if(remainder != 0) + { + mapSize = mapSize + pageSize - remainder; + } rc = mdb_env_set_mapsize(_menv, mapSize); if(rc != MDB_SUCCESS) { |