Skip to content

Commit 577556d

Browse files
committed
Don't store version number in MANIFEST
Summary: Talked to <insert internal project name> folks and they found it really scary that they won't be able to roll back once they upgrade to 2.8. We should fix this. Test Plan: make check Reviewers: haobo, ljin Reviewed By: ljin CC: leveldb Differential Revision: https://reviews.facebook.net/D17343
1 parent 5ec38c3 commit 577556d

File tree

5 files changed

+4
-49
lines changed

5 files changed

+4
-49
lines changed

HISTORY.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
* Added "virtual void WaitForJoin()" in class Env. Default operation is no-op.
1111
* Removed BackupEngine::DeleteBackupsNewerThan() function
1212
* Added new option -- verify_checksums_in_compaction
13-
* Chagned Options.prefix_extractor from raw pointer to shared_ptr (take ownership)
13+
* Changed Options.prefix_extractor from raw pointer to shared_ptr (take ownership)
1414
Changed HashSkipListRepFactory and HashLinkListRepFactory constructor to not take SliceTransform object (use Options.prefix_extractor implicitly)
1515
* Added Env::GetThreadPoolQueueLen(), which returns the waiting queue length of thread pools
1616
* Added a command "checkconsistency" in ldb tool, which checks

db/db_impl.cc

-1
Original file line numberDiff line numberDiff line change
@@ -568,7 +568,6 @@ uint64_t DBImpl::TEST_Current_Manifest_FileNo() {
568568

569569
Status DBImpl::NewDB() {
570570
VersionEdit new_db;
571-
new_db.SetVersionNumber();
572571
new_db.SetComparatorName(user_comparator()->Name());
573572
new_db.SetLogNumber(0);
574573
new_db.SetNextFile(2);

db/version_edit.cc

-15
Original file line numberDiff line numberDiff line change
@@ -29,18 +29,15 @@ enum Tag {
2929

3030
// these are new formats divergent from open source leveldb
3131
kNewFile2 = 100, // store smallest & largest seqno
32-
kVersionNumber = 101, // manifest version number, available after 2.8
3332
};
3433

3534
void VersionEdit::Clear() {
36-
version_number_ = 0;
3735
comparator_.clear();
3836
max_level_ = 0;
3937
log_number_ = 0;
4038
prev_log_number_ = 0;
4139
last_sequence_ = 0;
4240
next_file_number_ = 0;
43-
has_version_number_ = false;
4441
has_comparator_ = false;
4542
has_log_number_ = false;
4643
has_prev_log_number_ = false;
@@ -51,10 +48,6 @@ void VersionEdit::Clear() {
5148
}
5249

5350
void VersionEdit::EncodeTo(std::string* dst) const {
54-
if (has_version_number_) {
55-
PutVarint32(dst, kVersionNumber);
56-
PutVarint32(dst, version_number_);
57-
}
5851
if (has_comparator_) {
5952
PutVarint32(dst, kComparator);
6053
PutLengthPrefixedSlice(dst, comparator_);
@@ -133,14 +126,6 @@ Status VersionEdit::DecodeFrom(const Slice& src) {
133126

134127
while (msg == nullptr && GetVarint32(&input, &tag)) {
135128
switch (tag) {
136-
case kVersionNumber:
137-
if (GetVarint32(&input, &version_number_)) {
138-
has_version_number_ = true;
139-
} else {
140-
msg = "version number";
141-
}
142-
break;
143-
144129
case kComparator:
145130
if (GetLengthPrefixedSlice(&input, &str)) {
146131
comparator_ = str.ToString();

db/version_edit.h

-10
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,6 @@ class VersionEdit {
4646

4747
void Clear();
4848

49-
void SetVersionNumber() {
50-
has_version_number_ = true;
51-
version_number_ = kManifestVersion;
52-
}
5349
void SetComparatorName(const Slice& name) {
5450
has_comparator_ = true;
5551
comparator_ = name.ToString();
@@ -114,13 +110,11 @@ class VersionEdit {
114110
bool GetLevel(Slice* input, int* level, const char** msg);
115111

116112
int max_level_;
117-
uint32_t version_number_;
118113
std::string comparator_;
119114
uint64_t log_number_;
120115
uint64_t prev_log_number_;
121116
uint64_t next_file_number_;
122117
SequenceNumber last_sequence_;
123-
bool has_version_number_;
124118
bool has_comparator_;
125119
bool has_log_number_;
126120
bool has_prev_log_number_;
@@ -129,10 +123,6 @@ class VersionEdit {
129123

130124
DeletedFileSet deleted_files_;
131125
std::vector<std::pair<int, FileMetaData> > new_files_;
132-
133-
enum {
134-
kManifestVersion = 1
135-
};
136126
};
137127

138128
} // namespace rocksdb

db/version_set.cc

+3-22
Original file line numberDiff line numberDiff line change
@@ -1768,8 +1768,6 @@ Status VersionSet::Recover() {
17681768
return s;
17691769
}
17701770

1771-
bool have_version_number = false;
1772-
bool log_number_decrease = false;
17731771
bool have_log_number = false;
17741772
bool have_prev_log_number = false;
17751773
bool have_next_file = false;
@@ -1810,17 +1808,15 @@ Status VersionSet::Recover() {
18101808

18111809
builder.Apply(&edit);
18121810

1813-
if (edit.has_version_number_) {
1814-
have_version_number = true;
1815-
}
1816-
18171811
// Only a flush's edit or a new snapshot can write log number during
18181812
// LogAndApply. Since memtables are flushed and inserted into
18191813
// manifest_writers_ queue in order, the log number in MANIFEST file
18201814
// should be monotonically increasing.
18211815
if (edit.has_log_number_) {
18221816
if (have_log_number && log_number >= edit.log_number_) {
1823-
log_number_decrease = true;
1817+
Log(options_->info_log,
1818+
"decreasing of log_number is detected "
1819+
"in MANIFEST\n");
18241820
} else {
18251821
log_number = edit.log_number_;
18261822
have_log_number = true;
@@ -1842,20 +1838,6 @@ Status VersionSet::Recover() {
18421838
have_last_sequence = true;
18431839
}
18441840
}
1845-
1846-
if (s.ok() && log_number_decrease) {
1847-
// Since release 2.8, version number is added into MANIFEST file.
1848-
// Prior release 2.8, a bug in LogAndApply() can cause log_number
1849-
// to be smaller than the one from previous edit. To ensure backward
1850-
// compatibility, only fail for MANIFEST genearated by release 2.8
1851-
// and after.
1852-
if (have_version_number) {
1853-
s = Status::Corruption("log number decreases");
1854-
} else {
1855-
Log(options_->info_log, "decreasing of log_number is detected "
1856-
"in MANIFEST\n");
1857-
}
1858-
}
18591841
}
18601842

18611843
if (s.ok()) {
@@ -2125,7 +2107,6 @@ Status VersionSet::WriteSnapshot(log::Writer* log) {
21252107

21262108
// Save metadata
21272109
VersionEdit edit;
2128-
edit.SetVersionNumber();
21292110
edit.SetComparatorName(icmp_.user_comparator()->Name());
21302111

21312112
// Save files

0 commit comments

Comments
 (0)