aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2017-02-01 11:33:51 +0100
committerWladimir J. van der Laan <laanwj@gmail.com>2017-02-01 11:41:00 +0100
commit77bd8c4cab67b6df6a09f856534653c7e064d6ec (patch)
treed178cf918598660ff40bc061c42f00b04008d7db
parent7bfb77045c4b06db3597c023de97411ed287e252 (diff)
parent29fb311858f098e79ed5334a128f2b0c8c88b235 (diff)
downloadbitcoin-77bd8c4cab67b6df6a09f856534653c7e064d6ec.tar.xz
Merge #9625: Increase minimum debug.log size to 10MB after shrink.
29fb311 Increase minimum debug.log size to 10MB after shrink. (Alex Morcos)
-rw-r--r--src/init.cpp5
-rw-r--r--src/util.cpp8
2 files changed, 10 insertions, 3 deletions
diff --git a/src/init.cpp b/src/init.cpp
index d7d60b0fbc..7c108ac4a6 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -1146,8 +1146,11 @@ bool AppInitMain(boost::thread_group& threadGroup, CScheduler& scheduler)
#ifndef WIN32
CreatePidFile(GetPidFile(), getpid());
#endif
- if (GetBoolArg("-shrinkdebugfile", !fDebug))
+ if (GetBoolArg("-shrinkdebugfile", !fDebug)) {
+ // Do this first since it both loads a bunch of debug.log into memory,
+ // and because this needs to happen before any other debug.log printing
ShrinkDebugFile();
+ }
if (fPrintToDebugLog)
OpenDebugLog();
diff --git a/src/util.cpp b/src/util.cpp
index 08ee6b8b87..ba157625d8 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -723,13 +723,17 @@ void AllocateFileRange(FILE *file, unsigned int offset, unsigned int length) {
void ShrinkDebugFile()
{
+ // Amount of debug.log to save at end when shrinking (must fit in memory)
+ constexpr size_t RECENT_DEBUG_HISTORY_SIZE = 10 * 1000000;
// Scroll debug.log if it's getting too big
boost::filesystem::path pathLog = GetDataDir() / "debug.log";
FILE* file = fopen(pathLog.string().c_str(), "r");
- if (file && boost::filesystem::file_size(pathLog) > 10 * 1000000)
+ // If debug.log file is more than 10% bigger the RECENT_DEBUG_HISTORY_SIZE
+ // trim it down by saving only the last RECENT_DEBUG_HISTORY_SIZE bytes
+ if (file && boost::filesystem::file_size(pathLog) > 11 * (RECENT_DEBUG_HISTORY_SIZE / 10))
{
// Restart the file with some of the end
- std::vector <char> vch(200000,0);
+ std::vector<char> vch(RECENT_DEBUG_HISTORY_SIZE, 0);
fseek(file, -((long)vch.size()), SEEK_END);
int nBytes = fread(vch.data(), 1, vch.size(), file);
fclose(file);