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
main
Dhruba Borthakur 12 years ago
parent 661dc15721
commit 7889e09455
  1. 11
      db/version_set.cc
  2. 3
      db/version_set.h
  3. 2
      tools/manifest_dump.cc

@ -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()) { if (s.ok()) {
builder.Apply(&edit); builder.Apply(&edit);
} }
@ -1216,7 +1223,8 @@ Status VersionSet::Recover() {
return s; 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 { struct LogReporter : public log::Reader::Reporter {
Status* status; Status* status;
virtual void Corruption(size_t bytes, const Status& s) { 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 last_sequence = 0;
uint64_t log_number = 0; uint64_t log_number = 0;
uint64_t prev_log_number = 0; uint64_t prev_log_number = 0;
int count = 0;
VersionSet::Builder builder(this, current_); VersionSet::Builder builder(this, current_);
{ {

@ -333,7 +333,8 @@ class VersionSet {
const char* LevelSummary(LevelSummaryStorage* scratch) const; const char* LevelSummary(LevelSummaryStorage* scratch) const;
// printf contents (for debugging) // 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 // Return a human-readable short (single-line) summary of the data size
// of files per level. Uses *scratch as backing store. // of files per level. Uses *scratch as backing store.

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

Loading…
Cancel
Save