Skip to content

Commit 3d16f58

Browse files
author
MarcoFalke
committed
Merge #12659: Improve Fatal LevelDB Log Messages
f4b68b3 Log fatal LevelDB errors more verbosely (Evan Klitzke) Pull request description: The `leveldb::Status` class logs the filename of corrupted files, which might be useful when looking at error reports from usres. In theory this is already logged via the `LogPrintf()` statement in `HandleError()`, but that may not always be close to where the final error message is logged, e.g. see bitcoin/bitcoin#11355 (comment) where the log trace provided by the user does not contain that information (and other user comments in the same issue). This also adds a log message instructing the user to run the process with `-debug=leveldb`, which provides much more verbose error messages about LevelDB internals. This may not really help much, but improving the error messages here can't hurt. Tree-SHA512: bbdc52f0ae50e77e4d74060f9f77c6a0b10d5fad1da371eec1ad38a499af5fde3a3b34dd915e721f6bbe779a1f9693ab04fd9cdbcfa95c28f2979b4c0df181c9
2 parents ae5bcc7 + f4b68b3 commit 3d16f58

File tree

1 file changed

+4
-8
lines changed

1 file changed

+4
-8
lines changed

src/dbwrapper.cpp

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -218,14 +218,10 @@ void HandleError(const leveldb::Status& status)
218218
{
219219
if (status.ok())
220220
return;
221-
LogPrintf("%s\n", status.ToString());
222-
if (status.IsCorruption())
223-
throw dbwrapper_error("Database corrupted");
224-
if (status.IsIOError())
225-
throw dbwrapper_error("Database I/O error");
226-
if (status.IsNotFound())
227-
throw dbwrapper_error("Database entry missing");
228-
throw dbwrapper_error("Unknown database error");
221+
const std::string errmsg = "Fatal LevelDB error: " + status.ToString();
222+
LogPrintf("%s\n", errmsg);
223+
LogPrintf("You can use -debug=leveldb to get more complete diagnostic messages\n");
224+
throw dbwrapper_error(errmsg);
229225
}
230226

231227
const std::vector<unsigned char>& GetObfuscateKey(const CDBWrapper &w)

0 commit comments

Comments
 (0)