Summary: The only thing we do with compaction pointers is set them to some values, we never actually read them. I don't know what we used them for, but it doesn't look like we use them anymore.
Test Plan: make check
Reviewers: dhruba, haobo, kailiu, sdong
Reviewed By: kailiu
CC: leveldb
Differential Revision: https://reviews.facebook.net/D15225
PutVarint64(dst, last_sequence_);
}
- for (size_t i = 0; i < compact_pointers_.size(); i++) {
- PutVarint32(dst, kCompactPointer);
- PutVarint32(dst, compact_pointers_[i].first); // level
- PutLengthPrefixedSlice(dst, compact_pointers_[i].second.Encode());
- }
-
for (DeletedFileSet::const_iterator iter = deleted_files_.begin();
iter != deleted_files_.end();
++iter) {
case kCompactPointer:
if (GetLevel(&input, &level, &msg) &&
GetInternalKey(&input, &key)) {
- compact_pointers_.push_back(std::make_pair(level, key));
+ // we don't use compact pointers anymore,
+ // but we should not fail if they are still
+ // in manifest
} else {
if (!msg) {
msg = "compaction pointer";
r.append("\n LastSeq: ");
AppendNumberTo(&r, last_sequence_);
}
- for (size_t i = 0; i < compact_pointers_.size(); i++) {
- r.append("\n CompactPointer: ");
- AppendNumberTo(&r, compact_pointers_[i].first);
- r.append(" ");
- r.append(compact_pointers_[i].second.DebugString(hex_key));
- }
for (DeletedFileSet::const_iterator iter = deleted_files_.begin();
iter != deleted_files_.end();
++iter) {
has_last_sequence_ = true;
last_sequence_ = seq;
}
- void SetCompactPointer(int level, const InternalKey& key) {
- compact_pointers_.push_back(std::make_pair(level, key));
- }
// Add the specified file at the specified number.
// REQUIRES: This version has not been saved (see VersionSet::SaveTo)
bool has_next_file_number_;
bool has_last_sequence_;
- std::vector<std::pair<int, InternalKey> > compact_pointers_;
DeletedFileSet deleted_files_;
std::vector<std::pair<int, FileMetaData> > new_files_;
};
kBig + 500 + i,
kBig + 600 + i);
edit.DeleteFile(4, kBig + 700 + i);
- edit.SetCompactPointer(i, InternalKey("x", kBig + 900 + i, kTypeValue));
}
edit.SetComparatorName("foo");
void Apply(VersionEdit* edit) {
CheckConsistency(base_);
- // Update compaction pointers
- for (size_t i = 0; i < edit->compact_pointers_.size(); i++) {
- const int level = edit->compact_pointers_[i].first;
- vset_->compact_pointer_[level] =
- edit->compact_pointers_[i].second.Encode().ToString();
- }
-
// Delete files
const VersionEdit::DeletedFileSet& del = edit->deleted_files_;
for (VersionEdit::DeletedFileSet::const_iterator iter = del.begin();
manifest_file_size_(0),
storage_options_(storage_options),
storage_options_compactions_(storage_options_) {
- compact_pointer_ = new std::string[options_->num_levels];
if (options_->compaction_style == kCompactionStyleUniversal) {
compaction_picker_.reset(new UniversalCompactionPicker(options_, &icmp_));
} else {
delete file;
}
obsolete_files_.clear();
- delete[] compact_pointer_;
}
void VersionSet::AppendVersion(Version* v) {
VersionEdit edit;
edit.SetComparatorName(icmp_.user_comparator()->Name());
- // Save compaction pointers
- for (int level = 0; level < NumberLevels(); level++) {
- if (!compact_pointer_[level].empty()) {
- InternalKey key;
- key.DecodeFrom(compact_pointer_[level]);
- edit.SetCompactPointer(level, key);
- }
- }
-
// Save files
for (int level = 0; level < current_->NumberLevels(); level++) {
const std::vector<FileMetaData*>& files = current_->files_[level];
// we have too many level 0 files
bool need_slowdown_for_num_level0_files_;
- // Per-level key at which the next compaction at that level should start.
- // Either an empty string, or a valid InternalKey.
- std::string* compact_pointer_;
-
// An object that keeps all the compaction stats
// and picks the next compaction
std::unique_ptr<CompactionPicker> compaction_picker_;
current_version->files_ = new_files_list;
current_version->num_levels_ = new_levels;
- delete[] compact_pointer_;
num_levels_ = new_levels;
- compact_pointer_ = new std::string[new_levels];
compaction_picker_->ReduceNumberOfLevels(new_levels);
VersionEdit ve;
st = LogAndApply(&ve, mu, true);