diff options
| author | Pieter Wuille <[email protected]> | 2015-11-05 00:16:49 +0100 |
|---|---|---|
| committer | Pieter Wuille <[email protected]> | 2015-11-05 00:43:49 +0100 |
| commit | 22e780737db57bcb18b3824eb8158e19a4775cb6 (patch) | |
| tree | 56969bf36db75eb79d9fb33c3eea6bb5ae2822ff /src/main.cpp | |
| parent | Merge pull request #6938 (diff) | |
| download | discoin-22e780737db57bcb18b3824eb8158e19a4775cb6.tar.xz discoin-22e780737db57bcb18b3824eb8158e19a4775cb6.zip | |
Always flush block and undo when switching to new file
Previously, the undo weren't being flushed during a reindex because
fKnown was set to true in FindBlockPos. That is the correct behaviour
for block files as they aren't being touched, but undo files are
touched.
This changes the behaviour to always flush when switching to a new file
(even for block files, though that isn't really necessary).
Diffstat (limited to 'src/main.cpp')
| -rw-r--r-- | src/main.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/main.cpp b/src/main.cpp index 26a22ae6f..a2a5e0b72 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2517,8 +2517,6 @@ bool FindBlockPos(CValidationState &state, CDiskBlockPos &pos, unsigned int nAdd if (!fKnown) { while (vinfoBlockFile[nFile].nSize + nAddSize >= MAX_BLOCKFILE_SIZE) { - LogPrintf("Leaving block file %i: %s\n", nFile, vinfoBlockFile[nFile].ToString()); - FlushBlockFile(true); nFile++; if (vinfoBlockFile.size() <= nFile) { vinfoBlockFile.resize(nFile + 1); @@ -2528,7 +2526,14 @@ bool FindBlockPos(CValidationState &state, CDiskBlockPos &pos, unsigned int nAdd pos.nPos = vinfoBlockFile[nFile].nSize; } - nLastBlockFile = nFile; + if (nFile != nLastBlockFile) { + if (!fKnown) { + LogPrintf("Leaving block file %i: %s\n", nFile, vinfoBlockFile[nFile].ToString()); + } + FlushBlockFile(!fKnown); + nLastBlockFile = nFile; + } + vinfoBlockFile[nFile].AddBlock(nHeight, nTime); if (fKnown) vinfoBlockFile[nFile].nSize = std::max(pos.nPos + nAddSize, vinfoBlockFile[nFile].nSize); |