summaryrefslogtreecommitdiff
path: root/cpp/src/IceDB
diff options
context:
space:
mode:
authorDwayne Boone <dwayne@zeroc.com>2015-11-05 12:55:25 -0330
committerDwayne Boone <dwayne@zeroc.com>2015-11-05 12:55:25 -0330
commita548114af8698b6ede6d3815ff51c9e4547cea29 (patch)
treea3bac345625ed559e3d361ddb12e0ab76f746fc5 /cpp/src/IceDB
parentIceGrid: catch LMDB exceptions on Database creation (diff)
downloadice-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.cpp14
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)
{