diff options
author | Jose <jose@zeroc.com> | 2009-12-04 06:51:23 +0100 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2009-12-04 06:51:23 +0100 |
commit | 0ad40835182795b5f9bedeea10aeb6f07c666e7d (patch) | |
tree | 5dff55b02aefb5854a972eb2cef128d1537d5c47 /cpp/src/Freeze/SharedDbEnv.cpp | |
parent | Bug 4408 - plugin does not work with x64 only installation (diff) | |
download | ice-0ad40835182795b5f9bedeea10aeb6f07c666e7d.tar.bz2 ice-0ad40835182795b5f9bedeea10aeb6f07c666e7d.tar.xz ice-0ad40835182795b5f9bedeea10aeb6f07c666e7d.zip |
4089 - IceGrid database corruption.
Diffstat (limited to 'cpp/src/Freeze/SharedDbEnv.cpp')
-rw-r--r-- | cpp/src/Freeze/SharedDbEnv.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/cpp/src/Freeze/SharedDbEnv.cpp b/cpp/src/Freeze/SharedDbEnv.cpp index 764662d9386..5156b52aa00 100644 --- a/cpp/src/Freeze/SharedDbEnv.cpp +++ b/cpp/src/Freeze/SharedDbEnv.cpp @@ -482,6 +482,14 @@ Freeze::SharedDbEnv::SharedDbEnv(const std::string& envName, } #endif + string propertyPrefix = string("Freeze.DbEnv.") + envName; + string dbHome = properties->getPropertyWithDefault(propertyPrefix + ".DbHome", envName); + + // + // File lock to prevent multiple process open the same db env. + // + _fileLock = new ::IceUtilInternal::FileLock(dbHome + "/Freeze.lock"); + _trace = properties->getPropertyAsInt("Freeze.Trace.DbEnv"); try @@ -497,11 +505,8 @@ Freeze::SharedDbEnv::SharedDbEnv(const std::string& envName, out << "opening database environment \"" << envName << "\""; } - string propertyPrefix = string("Freeze.DbEnv.") + envName; - - _env->set_errpfx(reinterpret_cast<char*>(this)); - + _env->set_errcall(dbErrCallback); #ifdef _WIN32 @@ -552,9 +557,6 @@ Freeze::SharedDbEnv::SharedDbEnv(const std::string& envName, // Threading // flags |= DB_THREAD; - - string dbHome = properties->getPropertyWithDefault( - propertyPrefix + ".DbHome", envName); _env->open(Ice::nativeToUTF8(_communicator, dbHome).c_str(), flags, FREEZE_DB_MODE); |