|
@ -898,6 +898,7 @@ Status VersionSet::Recover(bool* save_manifest) { |
|
|
uint64_t log_number = 0; |
|
|
uint64_t log_number = 0; |
|
|
uint64_t prev_log_number = 0; |
|
|
uint64_t prev_log_number = 0; |
|
|
Builder builder(this, current_); |
|
|
Builder builder(this, current_); |
|
|
|
|
|
int read_records = 0; |
|
|
|
|
|
|
|
|
{ |
|
|
{ |
|
|
LogReporter reporter; |
|
|
LogReporter reporter; |
|
@ -907,6 +908,7 @@ Status VersionSet::Recover(bool* save_manifest) { |
|
|
Slice record; |
|
|
Slice record; |
|
|
std::string scratch; |
|
|
std::string scratch; |
|
|
while (reader.ReadRecord(&record, &scratch) && s.ok()) { |
|
|
while (reader.ReadRecord(&record, &scratch) && s.ok()) { |
|
|
|
|
|
++read_records; |
|
|
VersionEdit edit; |
|
|
VersionEdit edit; |
|
|
s = edit.DecodeFrom(record); |
|
|
s = edit.DecodeFrom(record); |
|
|
if (s.ok()) { |
|
|
if (s.ok()) { |
|
@ -981,6 +983,10 @@ Status VersionSet::Recover(bool* save_manifest) { |
|
|
} else { |
|
|
} else { |
|
|
*save_manifest = true; |
|
|
*save_manifest = true; |
|
|
} |
|
|
} |
|
|
|
|
|
} else { |
|
|
|
|
|
std::string error = s.ToString(); |
|
|
|
|
|
Log(options_->info_log, "Error recovering version set with %d records: %s", |
|
|
|
|
|
read_records, error.c_str()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
return s; |
|
|
return s; |
|
|