From 5ee6a5b9def450ccea9b5bede69e210ae942a1c7 Mon Sep 17 00:00:00 2001 From: DarthArgus Date: Sun, 11 Dec 2016 00:27:23 +0000 Subject: [PATCH] go back to our original ... --- .../src/shared/ConfigServerDatabase.cpp | 16 +++--- .../serverDatabase/src/shared/Persister.cpp | 50 ++++++++++++------- 2 files changed, 40 insertions(+), 26 deletions(-) diff --git a/engine/server/library/serverDatabase/src/shared/ConfigServerDatabase.cpp b/engine/server/library/serverDatabase/src/shared/ConfigServerDatabase.cpp index 3b198c81..fd756581 100755 --- a/engine/server/library/serverDatabase/src/shared/ConfigServerDatabase.cpp +++ b/engine/server/library/serverDatabase/src/shared/ConfigServerDatabase.cpp @@ -34,14 +34,14 @@ void ConfigServerDatabase::install(void) ConfigServerUtility::install(); data = &staticData; - KEY_INT (objvarNameCleanupTime, 10); - KEY_INT (orphanedObjectCleanupTime, 10); - KEY_INT (marketAttributesCleanupTime, 10); - KEY_INT (messagesCleanupTime, 10); - KEY_INT (brokenObjectCleanupTime, 10); - KEY_INT (vendorObjectCleanupTime, 10); + KEY_INT (objvarNameCleanupTime, 0); + KEY_INT (orphanedObjectCleanupTime, 0); + KEY_INT (marketAttributesCleanupTime, 0); + KEY_INT (messagesCleanupTime, 0); + KEY_INT (brokenObjectCleanupTime, 0); + KEY_INT (vendorObjectCleanupTime, 0); KEY_STRING (customSQLFilename,""); - KEY_BOOL (enableFixBadCells, true); + KEY_BOOL (enableFixBadCells, false); KEY_STRING (objectTemplateListUpdateFilename,""); KEY_STRING (DSN,"gameserver"); @@ -56,7 +56,7 @@ void ConfigServerDatabase::install(void) KEY_INT (taskManagerPort, 60001); KEY_INT (expectedDBVersion, 270); KEY_BOOL (correctDBVersionRequired,true); - KEY_INT (saveFrequencyLimit,1); + KEY_INT (saveFrequencyLimit,0); KEY_STRING (schemaOwner, ""); KEY_STRING (goldSchemaOwner, ""); KEY_FLOAT (uniqueMessageCacheTimeSec, 30.0f); diff --git a/engine/server/library/serverDatabase/src/shared/Persister.cpp b/engine/server/library/serverDatabase/src/shared/Persister.cpp index 3d21f5ed..29b96463 100755 --- a/engine/server/library/serverDatabase/src/shared/Persister.cpp +++ b/engine/server/library/serverDatabase/src/shared/Persister.cpp @@ -605,38 +605,52 @@ void Persister::saveCompleted(Snapshot *completedSnapshot) if (i!=m_savingSnapshots.end()) { m_savingSnapshots.erase(i, m_savingSnapshots.end()); - } - - if (m_savingSnapshots.empty()) { - if (ConfigServerDatabase::getReportSaveTimes()) { + + delete completedSnapshot; + + if (m_savingSnapshots.empty() && ConfigServerDatabase::getReportSaveTimes()) + { int saveTime = Clock::timeMs() - m_saveStartTime; ++m_saveCount; m_totalSaveTime += saveTime; if (saveTime > m_maxSaveTime) m_maxSaveTime = saveTime; - + DEBUG_REPORT_LOG(true,("Save completed in %i. (Average %i, max %i)\n", saveTime, m_totalSaveTime/m_saveCount, m_maxSaveTime)); LOG("SaveTimes",("Save completed in %i. (Average %i, max %i)", saveTime, m_totalSaveTime/m_saveCount, m_maxSaveTime)); + m_lastSaveTime = saveTime; } - // message Central Server that the current save cycle is complete - GenericValueTypeMessage const saveCompleteMessage("DatabaseSaveComplete", ++m_saveCounter); - DatabaseProcess::getInstance().sendToCentralServer(saveCompleteMessage, true); - LOG("Database",("Sending DatabaseSaveComplete network message to Central.")); - } - - // character snapshot deletions seem to work ok, but world and object snaps do not for deletion...wtf - SnapshotListType::iterator j=std::remove(m_savingCharacterSnapshots.begin(),m_savingCharacterSnapshots.end(),completedSnapshot); - if (j != m_savingCharacterSnapshots.end()) { - m_savingCharacterSnapshots.erase(j, m_savingCharacterSnapshots.end()); - } - if (completedSnapshot != nullptr) { + if (m_savingSnapshots.empty()) + { + // message Central Server that the current save cycle is complete + GenericValueTypeMessage const saveCompleteMessage("DatabaseSaveComplete", ++m_saveCounter); + DatabaseProcess::getInstance().sendToCentralServer(saveCompleteMessage, true); + LOG("Database",("Sending DatabaseSaveComplete network message to Central.")); + } + + { + // set the last save completion time (for the monitoring program) + time_t theTime = time(0); + m_lastSaveCompletionTime = ctime(&theTime); + } + } + else + { + SnapshotListType::iterator j=std::remove(m_savingCharacterSnapshots.begin(),m_savingCharacterSnapshots.end(),completedSnapshot); + + DEBUG_FATAL(i==m_savingCharacterSnapshots.end(),("Programmer bug: SaveCompleted() called with a snapshot that wasn't in m_savingSnapshots or m_savingCharacterSnapshots.")); + + m_savingCharacterSnapshots.erase(j, m_savingCharacterSnapshots.end()); + delete completedSnapshot; - completedSnapshot = nullptr; + + DEBUG_REPORT_LOG(ConfigServerDatabase::getReportSaveTimes(),("New character save completed\n")); } } + // ---------------------------------------------------------------------- void Persister::receiveMessage(const MessageDispatch::Emitter & source, const MessageDispatch::MessageBase & message)