Enhance manifest_dump to print each individual edit.

Summary:
The manifest file contains a series of edits. If the verbose
option is switched on, then print each individual edit in the
manifest file. This helps in debugging.

Test Plan: make clean manifest_dump

Reviewers: emayanke, sheki

Reviewed By: sheki

CC: leveldb

Differential Revision: https://reviews.facebook.net/D6807
This commit is contained in:
Dhruba Borthakur 2012-11-19 11:54:13 -08:00
parent 661dc15721
commit 7889e09455
3 changed files with 13 additions and 3 deletions

View File

@ -1147,6 +1147,13 @@ Status VersionSet::Recover() {
}
}
// Write out each individual edit
if (verbose) {
printf("*************************Edit[%d] = %s\n",
count, edit.DebugString().c_str());
}
count++;
if (s.ok()) {
builder.Apply(&edit);
}
@ -1216,7 +1223,8 @@ Status VersionSet::Recover() {
return s;
}
Status VersionSet::DumpManifest(Options& options, std::string& dscname) {
Status VersionSet::DumpManifest(Options& options, std::string& dscname,
bool verbose) {
struct LogReporter : public log::Reader::Reporter {
Status* status;
virtual void Corruption(size_t bytes, const Status& s) {
@ -1239,6 +1247,7 @@ Status VersionSet::DumpManifest(Options& options, std::string& dscname) {
uint64_t last_sequence = 0;
uint64_t log_number = 0;
uint64_t prev_log_number = 0;
int count = 0;
VersionSet::Builder builder(this, current_);
{

View File

@ -333,7 +333,8 @@ class VersionSet {
const char* LevelSummary(LevelSummaryStorage* scratch) const;
// printf contents (for debugging)
Status DumpManifest(Options& options, std::string& manifestFileName);
Status DumpManifest(Options& options, std::string& manifestFileName,
bool verbose);
// Return a human-readable short (single-line) summary of the data size
// of files per level. Uses *scratch as backing store.

View File

@ -60,7 +60,7 @@ int main(int argc, char** argv) {
VersionSet* versions = new VersionSet(dbname, &options,
tc, cmp);
Status s = versions->DumpManifest(options, file);
Status s = versions->DumpManifest(options, file, verbose);
if (!s.ok()) {
printf("Error in processing file %s %s\n", manifestfile.c_str(),
s.ToString().c_str());