| 988 | } |
| 989 | |
| 990 | bool VersionSet::ReuseManifest(const std::string& dscname, |
| 991 | const std::string& dscbase) { |
| 992 | if (!options_->reuse_logs) { |
| 993 | return false; |
| 994 | } |
| 995 | FileType manifest_type; |
| 996 | uint64_t manifest_number; |
| 997 | uint64_t manifest_size; |
| 998 | if (!ParseFileName(dscbase, &manifest_number, &manifest_type) || |
| 999 | manifest_type != kDescriptorFile || |
| 1000 | !env_->GetFileSize(dscname, &manifest_size).ok() || |
| 1001 | // Make new compacted MANIFEST if old one is too big |
| 1002 | manifest_size >= TargetFileSize(options_)) { |
| 1003 | return false; |
| 1004 | } |
| 1005 | |
| 1006 | assert(descriptor_file_ == nullptr); |
| 1007 | assert(descriptor_log_ == nullptr); |
| 1008 | Status r = env_->NewAppendableFile(dscname, &descriptor_file_); |
| 1009 | if (!r.ok()) { |
| 1010 | Log(options_->info_log, "Reuse MANIFEST: %s\n", r.ToString().c_str()); |
| 1011 | assert(descriptor_file_ == nullptr); |
| 1012 | return false; |
| 1013 | } |
| 1014 | |
| 1015 | Log(options_->info_log, "Reusing MANIFEST %s\n", dscname.c_str()); |
| 1016 | descriptor_log_ = new log::Writer(descriptor_file_, manifest_size); |
| 1017 | manifest_file_number_ = manifest_number; |
| 1018 | return true; |
| 1019 | } |
| 1020 | |
| 1021 | void VersionSet::MarkFileNumberUsed(uint64_t number) { |
| 1022 | if (next_file_number_ <= number) { |
nothing calls this directly
no test coverage detected