Summary: ./manifest_dump --file=/tmp/dbbench/MANIFEST-000002 Output looks like manifest_file_number 30 next_file_number 31 last_sequence 388082 log_number 28 prev_log_number 0 --- level 0 --- --- level 1 --- --- level 2 --- 5:3244155['0000000000000000' @ 1 : 1 .. '0000000000028220' @ 28221 : 1] 7:3244177['0000000000028221' @ 28222 : 1 .. '0000000000056441' @ 56442 : 1] 9:3244156['0000000000056442' @ 56443 : 1 .. '0000000000084662' @ 84663 : 1] 11:3244178['0000000000084663' @ 84664 : 1 .. '0000000000112883' @ 112884 : 1] 13:3244158['0000000000112884' @ 112885 : 1 .. '0000000000141104' @ 141105 : 1] 15:3244176['0000000000141105' @ 141106 : 1 .. '0000000000169325' @ 169326 : 1] 17:3244156['0000000000169326' @ 169327 : 1 .. '0000000000197546' @ 197547 : 1] 19:3244178['0000000000197547' @ 197548 : 1 .. '0000000000225767' @ 225768 : 1] 21:3244155['0000000000225768' @ 225769 : 1 .. '0000000000253988' @ 253989 : 1] 23:3244179['0000000000253989' @ 253990 : 1 .. '0000000000282209' @ 282210 : 1] 25:3244157['0000000000282210' @ 282211 : 1 .. '0000000000310430' @ 310431 : 1] 27:3244176['0000000000310431' @ 310432 : 1 .. '0000000000338651' @ 338652 : 1] 29:3244156['0000000000338652' @ 338653 : 1 .. '0000000000366872' @ 366873 : 1] --- level 3 --- --- level 4 --- --- level 5 --- --- level 6 --- Test Plan: run on test directory created by dbbench Reviewers: heyongqiang Reviewed By: heyongqiang CC: hustliubo Differential Revision: https://reviews.facebook.net/D4743main
parent
680e571c4c
commit
2aa514ec8c
@ -0,0 +1,71 @@ |
||||
// Copyright (c) 2011 The LevelDB Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
||||
|
||||
#include "db/version_set.h" |
||||
|
||||
#include <algorithm> |
||||
#include <stdio.h> |
||||
#include "db/filename.h" |
||||
#include "db/log_reader.h" |
||||
#include "db/log_writer.h" |
||||
#include "db/memtable.h" |
||||
#include "db/table_cache.h" |
||||
#include "leveldb/env.h" |
||||
#include "leveldb/table_builder.h" |
||||
#include "table/merger.h" |
||||
#include "table/two_level_iterator.h" |
||||
#include "util/coding.h" |
||||
#include "util/logging.h" |
||||
|
||||
static int verbose = 0; |
||||
|
||||
using namespace leveldb; |
||||
|
||||
//
|
||||
// Takes a manifest file and dumps out all metedata
|
||||
//
|
||||
int main(int argc, char** argv) { |
||||
|
||||
// parse command line options
|
||||
int n; |
||||
char junk;
|
||||
int foundfile = 0; |
||||
std::string manifestfile; |
||||
for (int i = 1; i < argc; i++) { |
||||
std::string param(argv[i]); |
||||
if ((n = param.find("--file=")) != std::string::npos) { |
||||
manifestfile = param.substr(strlen("--file=")); |
||||
foundfile = 1; |
||||
} else if (sscanf(argv[i], "--verbose=%d%c", &n, &junk) == 1 && |
||||
(n == 0 || n == 1)) { |
||||
verbose = n; |
||||
} |
||||
} |
||||
if (!foundfile) { |
||||
fprintf(stderr, "%s [--verbose=0|1] [--file=pathname of manifest file\n", |
||||
argv[0]); |
||||
abort(); |
||||
} |
||||
|
||||
if (verbose) { |
||||
printf("Processing Manifest file %s\n", manifestfile.c_str()); |
||||
} |
||||
|
||||
Options options; |
||||
std::string file(manifestfile); |
||||
std::string dbname("dummy"); |
||||
TableCache* tc = new TableCache(dbname, &options, 10); |
||||
const InternalKeyComparator* cmp = new InternalKeyComparator(options.comparator); |
||||
|
||||
VersionSet* versions = new VersionSet(dbname, &options,
|
||||
tc, cmp); |
||||
Status s = versions->DumpManifest(options, file); |
||||
if (!s.ok()) { |
||||
printf("Error in processing file %s %s\n", manifestfile.c_str(), |
||||
s.ToString().c_str()); |
||||
} |
||||
if (verbose) { |
||||
printf("Processing Manifest file %s done\n", manifestfile.c_str()); |
||||
} |
||||
} |
Loading…
Reference in new issue