diff options
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/Freeze/IndexI.cpp | 32 | ||||
-rw-r--r-- | cpp/src/Freeze/MapI.cpp | 41 | ||||
-rw-r--r-- | cpp/src/Freeze/ObjectStore.cpp | 41 | ||||
-rw-r--r-- | cpp/src/Freeze/SharedDb.cpp | 91 | ||||
-rw-r--r-- | cpp/src/Ice/PropertyNames.cpp | 13 | ||||
-rw-r--r-- | cpp/src/Ice/PropertyNames.h | 2 |
6 files changed, 207 insertions, 13 deletions
diff --git a/cpp/src/Freeze/IndexI.cpp b/cpp/src/Freeze/IndexI.cpp index 11ea57a6db4..29b89cffcdb 100644 --- a/cpp/src/Freeze/IndexI.cpp +++ b/cpp/src/Freeze/IndexI.cpp @@ -318,14 +318,42 @@ Freeze::IndexI::associate(ObjectStoreBase* store, DbTxn* txn, _db->set_flags(DB_DUP | DB_DUPSORT); _db->set_app_private(this); + _dbName = EvictorIBase::indexPrefix + store->dbName() + "." + _index.name(); + + Ice::PropertiesPtr properties = store->communicator()->getProperties(); + string propPrefix = "Freeze.Evictor." + store->evictor()->filename() + "."; + + int btreeMinKey = properties->getPropertyAsInt(propPrefix + _dbName + ".BtreeMinKey"); + if(btreeMinKey > 2) + { + if(store->evictor()->trace() >= 1) + { + Trace out(store->evictor()->communicator()->getLogger(), "Freeze.Evictor"); + out << "Setting \"" << store->evictor()->filename() + "." + _dbName << "\"'s btree minkey to " << btreeMinKey; + } + _db->set_bt_minkey(btreeMinKey); + } + + bool checksum = properties->getPropertyAsInt(propPrefix + "Checksum") > 0; + if(checksum) + { + // + // No tracing on purpose + // + + _db->set_flags(DB_CHKSUM); + } + + // + // pagesize can't change + // + u_int32_t flags = 0; if(createDb) { flags = DB_CREATE; } - _dbName = EvictorIBase::indexPrefix + store->dbName() + "." + _index.name(); - _db->open(txn, store->evictor()->filename().c_str(), _dbName.c_str(), DB_BTREE, flags, FREEZE_DB_MODE); flags = 0; diff --git a/cpp/src/Freeze/MapI.cpp b/cpp/src/Freeze/MapI.cpp index 57728bc8f0e..ff8ffb916ee 100644 --- a/cpp/src/Freeze/MapI.cpp +++ b/cpp/src/Freeze/MapI.cpp @@ -1385,8 +1385,7 @@ Freeze::MapIndexI::MapIndexI(const ConnectionIPtr& connection, SharedDb& db, _db.reset(new Db(connection->dbEnv()->getEnv(), 0)); _db->set_flags(DB_DUP | DB_DUPSORT); - _db->set_app_private(this); - + u_int32_t flags = 0; if(createDb) { @@ -1402,6 +1401,44 @@ Freeze::MapIndexI::MapIndexI(const ConnectionIPtr& connection, SharedDb& db, _db->set_bt_compare(&customIndexCompare); } + Ice::PropertiesPtr properties = connection->communicator()->getProperties(); + string propPrefix = "Freeze.Map." + _dbName + "."; + int btreeMinKey = properties->getPropertyAsInt(propPrefix + "BtreeMinKey"); + if(btreeMinKey > 2) + { + if(connection->trace() >= 1) + { + Trace out(connection->communicator()->getLogger(), "Freeze.Map"); + out << "Setting \"" << _dbName << "\"'s btree minkey to " << btreeMinKey; + } + + _db->set_bt_minkey(btreeMinKey); + } + + bool checksum = properties->getPropertyAsInt(propPrefix + "Checksum") > 0; + if(checksum) + { + if(connection->trace() >= 1) + { + Trace out(connection->communicator()->getLogger(), "Freeze.Map"); + out << "Turning checksum on for \"" << _dbName << "\""; + } + + _db->set_flags(DB_CHKSUM); + } + + int pageSize = properties->getPropertyAsInt(propPrefix + "PageSize"); + if(pageSize > 0) + { + if(connection->trace() >= 1) + { + Trace out(connection->communicator()->getLogger(), "Freeze.Map"); + out << "Setting \"" << _dbName << "\"'s pagesize to " << pageSize; + } + + _db->set_pagesize(pageSize); + } + _db->open(txn, _dbName.c_str(), 0, DB_BTREE, flags, FREEZE_DB_MODE); // diff --git a/cpp/src/Freeze/ObjectStore.cpp b/cpp/src/Freeze/ObjectStore.cpp index f472cba7614..1d554c6bc2a 100644 --- a/cpp/src/Freeze/ObjectStore.cpp +++ b/cpp/src/Freeze/ObjectStore.cpp @@ -71,6 +71,46 @@ Freeze::ObjectStoreBase::ObjectStoreBase(const string& facet, const string& face { _db.reset(new Db(dbEnv, 0)); + Ice::PropertiesPtr properties = evictor->communicator()->getProperties(); + string propPrefix = "Freeze.Evictor." + evictor->filename() + "."; + + int btreeMinKey = properties->getPropertyAsInt(propPrefix + _dbName + ".BtreeMinKey"); + if(btreeMinKey > 2) + { + if(evictor->trace() >= 1) + { + Trace out(evictor->communicator()->getLogger(), "Freeze.Evictor"); + out << "Setting \"" << evictor->filename() + "." + _dbName << "\"'s btree minkey to " << btreeMinKey; + } + + _db->set_bt_minkey(btreeMinKey); + } + + bool checksum = properties->getPropertyAsInt(propPrefix + "Checksum") > 0; + if(checksum) + { + if(evictor->trace() >= 1) + { + Trace out(evictor->communicator()->getLogger(), "Freeze.Evictor"); + out << "Turning checksum on for \"" << evictor->filename() << "\""; + } + + _db->set_flags(DB_CHKSUM); + } + + int pageSize = properties->getPropertyAsInt(propPrefix + "PageSize"); + if(pageSize > 0) + { + if(evictor->trace() >= 1) + { + Trace out(evictor->communicator()->getLogger(), "Freeze.Evictor"); + out << "Setting \"" << evictor->filename() << "\"'s pagesize to " << pageSize; + } + + _db->set_pagesize(pageSize); + } + + TransactionPtr tx = catalogConnection->beginTransaction(); DbTxn* txn = getTxn(tx); @@ -79,6 +119,7 @@ Freeze::ObjectStoreBase::ObjectStoreBase(const string& facet, const string& face { flags |= DB_CREATE; } + _db->open(txn, evictor->filename().c_str(), _dbName.c_str(), DB_BTREE, flags, FREEZE_DB_MODE); for(size_t i = 0; i < _indices.size(); ++i) diff --git a/cpp/src/Freeze/SharedDb.cpp b/cpp/src/Freeze/SharedDb.cpp index 6ba8bed8a50..62756d57115 100644 --- a/cpp/src/Freeze/SharedDb.cpp +++ b/cpp/src/Freeze/SharedDb.cpp @@ -276,13 +276,57 @@ Freeze::SharedDb::SharedDb(const MapKey& mapKey, _key = key; _value = value; } + + try + { + set_app_private(this); + if(_keyCompare->compareEnabled()) + { + set_bt_compare(&customCompare); + } + + Ice::PropertiesPtr properties = _mapKey.communicator->getProperties(); + string propPrefix = "Freeze.Map." + _mapKey.dbName + "."; + + int btreeMinKey = properties->getPropertyAsInt(propPrefix + "BtreeMinKey"); + if(btreeMinKey > 2) + { + if(_trace >= 1) + { + Trace out(_mapKey.communicator->getLogger(), "Freeze.Map"); + out << "Setting \"" << _mapKey.dbName << "\"'s btree minkey to " << btreeMinKey; + } + set_bt_minkey(btreeMinKey); + } + + bool checksum = properties->getPropertyAsInt(propPrefix + "Checksum") > 0; + if(checksum) + { + if(_trace >= 1) + { + Trace out(_mapKey.communicator->getLogger(), "Freeze.Map"); + out << "Turning checksum on for \"" << _mapKey.dbName << "\""; + } - set_app_private(this); - if(_keyCompare->compareEnabled()) + set_flags(DB_CHKSUM); + } + + int pageSize = properties->getPropertyAsInt(propPrefix + "PageSize"); + if(pageSize > 0) + { + if(_trace >= 1) + { + Trace out(_mapKey.communicator->getLogger(), "Freeze.Map"); + out << "Setting \"" << _mapKey.dbName << "\"'s pagesize to " << pageSize; + } + set_pagesize(pageSize); + } + } + catch(const ::DbException& dx) { - set_bt_compare(&customCompare); + throw DatabaseException(__FILE__, __LINE__, dx.what()); } - + try { TransactionPtr tx = catalogConnection->beginTransaction(); @@ -385,12 +429,49 @@ Freeze::SharedDb::SharedDb(const MapKey& mapKey, DbEnv* env) : if(_trace >= 1) { - Trace out(_mapKey.communicator->getLogger(), "Freeze.Db"); + Trace out(_mapKey.communicator->getLogger(), "Freeze.Map"); out << "opening Db \"" << _mapKey.dbName << "\""; } try { + Ice::PropertiesPtr properties = _mapKey.communicator->getProperties(); + string propPrefix = "Freeze.Map." + _mapKey.dbName + "."; + + int btreeMinKey = properties->getPropertyAsInt(propPrefix + "BtreeMinKey"); + if(btreeMinKey > 2) + { + if(_trace >= 1) + { + Trace out(_mapKey.communicator->getLogger(), "Freeze.Map"); + out << "Setting \"" << _mapKey.dbName << "\"'s btree minkey to " << btreeMinKey; + } + set_bt_minkey(btreeMinKey); + } + + bool checksum = properties->getPropertyAsInt(propPrefix + "Checksum") > 0; + if(checksum) + { + if(_trace >= 1) + { + Trace out(_mapKey.communicator->getLogger(), "Freeze.Map"); + out << "Turning checksum on for \"" << _mapKey.dbName << "\""; + } + + set_flags(DB_CHKSUM); + } + + int pageSize = properties->getPropertyAsInt(propPrefix + "PageSize"); + if(pageSize > 0) + { + if(_trace >= 1) + { + Trace out(_mapKey.communicator->getLogger(), "Freeze.Map"); + out << "Setting \"" << _mapKey.dbName << "\"'s pagesize to " << pageSize; + } + set_pagesize(pageSize); + } + u_int32_t flags = DB_THREAD | DB_CREATE | DB_AUTO_COMMIT; open(0, _mapKey.dbName.c_str(), 0, DB_BTREE, flags, FREEZE_DB_MODE); } diff --git a/cpp/src/Ice/PropertyNames.cpp b/cpp/src/Ice/PropertyNames.cpp index 2f19712e53a..cb5e8ce95fc 100644 --- a/cpp/src/Ice/PropertyNames.cpp +++ b/cpp/src/Ice/PropertyNames.cpp @@ -7,7 +7,7 @@ // // ********************************************************************** // -// Generated by makeprops.py from file ../config/PropertyNames.xml, Thu Sep 27 10:37:22 2007 +// Generated by makeprops.py from file ../config/PropertyNames.xml, Fri Oct 12 15:45:46 2007 // IMPORTANT: Do not edit this file -- any edits made here will be lost! @@ -116,6 +116,7 @@ const IceInternal::Property IcePropsData[] = IceInternal::Property("Ice.Warn.Dispatch", false, 0), IceInternal::Property("Ice.Warn.Endpoints", false, 0), IceInternal::Property("Ice.Warn.UnknownProperties", false, 0), + IceInternal::Property("Ice.Warn.UnusedProperties", false, 0), IceInternal::Property("Ice.CacheMessageBuffers", false, 0), }; @@ -613,13 +614,19 @@ const IceInternal::Property FreezePropsData[] = IceInternal::Property("Freeze.DbEnv.*.DbRecoverFatal", false, 0), IceInternal::Property("Freeze.DbEnv.*.OldLogsAutoDelete", false, 0), IceInternal::Property("Freeze.DbEnv.*.PeriodicCheckpointMinSize", false, 0), + IceInternal::Property("Freeze.Evictor.*.BtreeMinKey", false, 0), + IceInternal::Property("Freeze.Evictor.*.Checksum", false, 0), IceInternal::Property("Freeze.Evictor.*.MaxTxSize", false, 0), + IceInternal::Property("Freeze.Evictor.*.PageSize", false, 0), + IceInternal::Property("Freeze.Evictor.*.PopulateEmptyIndices", false, 0), + IceInternal::Property("Freeze.Evictor.*.RollbackOnUserException", false, 0), IceInternal::Property("Freeze.Evictor.*.SavePeriod", false, 0), IceInternal::Property("Freeze.Evictor.*.SaveSizeTrigger", false, 0), IceInternal::Property("Freeze.Evictor.*.StreamTimeout", false, 0), - IceInternal::Property("Freeze.Evictor.*.PopulateEmptyIndices", false, 0), - IceInternal::Property("Freeze.Evictor.*.RollbackOnUserException", false, 0), IceInternal::Property("Freeze.Evictor.UseNonmutating", false, 0), + IceInternal::Property("Freeze.Map.*.BtreeMinKey", false, 0), + IceInternal::Property("Freeze.Map.*.Checksum", false, 0), + IceInternal::Property("Freeze.Map.*.PageSize", false, 0), IceInternal::Property("Freeze.Trace.DbEnv", false, 0), IceInternal::Property("Freeze.Trace.Evictor", false, 0), IceInternal::Property("Freeze.Trace.Map", false, 0), diff --git a/cpp/src/Ice/PropertyNames.h b/cpp/src/Ice/PropertyNames.h index 0f445c67928..9896f908a5a 100644 --- a/cpp/src/Ice/PropertyNames.h +++ b/cpp/src/Ice/PropertyNames.h @@ -7,7 +7,7 @@ // // ********************************************************************** // -// Generated by makeprops.py from file ../config/PropertyNames.xml, Thu Sep 27 10:37:22 2007 +// Generated by makeprops.py from file ../config/PropertyNames.xml, Fri Oct 12 15:45:46 2007 // IMPORTANT: Do not edit this file -- any edits made here will be lost! |