Gentoo Archives: gentoo-commits

From: "Anthony G. Basile (blueness)" <blueness@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo-x86 commit in dev-libs/leveldb/files: leveldb-1.9.0-forwardcompat.patch
Date: Mon, 30 Jun 2014 01:08:16
Message-Id: 20140630010812.023AB2004F@flycatcher.gentoo.org
1 blueness 14/06/30 01:08:11
2
3 Added: leveldb-1.9.0-forwardcompat.patch
4 Log:
5 Add forward compat patch, bug #506184
6
7 (Portage version: 2.2.8-r1/cvs/Linux x86_64, signed Manifest commit with key 0xF52D4BBA)
8
9 Revision Changes Path
10 1.1 dev-libs/leveldb/files/leveldb-1.9.0-forwardcompat.patch
11
12 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-libs/leveldb/files/leveldb-1.9.0-forwardcompat.patch?rev=1.1&view=markup
13 plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-libs/leveldb/files/leveldb-1.9.0-forwardcompat.patch?rev=1.1&content-type=text/plain
14
15 Index: leveldb-1.9.0-forwardcompat.patch
16 ===================================================================
17 diff -ur leveldb-1.9.0.orig/db/db_test.cc leveldb-1.9.0/db/db_test.cc
18 --- leveldb-1.9.0.orig/db/db_test.cc 2013-01-07 21:07:29.000000000 +0000
19 +++ leveldb-1.9.0/db/db_test.cc 2014-03-28 22:58:59.000000000 +0000
20 @@ -139,7 +139,7 @@
21
22 Status s = target()->NewWritableFile(f, r);
23 if (s.ok()) {
24 - if (strstr(f.c_str(), ".sst") != NULL) {
25 + if (strstr(f.c_str(), ".sst") != NULL || strstr(f.c_str(), ".ldb") != NULL) {
26 *r = new SSTableFile(this, *r);
27 } else if (strstr(f.c_str(), "MANIFEST") != NULL) {
28 *r = new ManifestFile(this, *r);
29 diff -ur leveldb-1.9.0.orig/db/filename.cc leveldb-1.9.0/db/filename.cc
30 --- leveldb-1.9.0.orig/db/filename.cc 2013-01-07 21:07:29.000000000 +0000
31 +++ leveldb-1.9.0/db/filename.cc 2014-03-28 23:07:48.000000000 +0000
32 @@ -34,6 +34,11 @@
33 return MakeFileName(name, number, "sst");
34 }
35
36 +std::string LDBTableFileName(const std::string& name, uint64_t number) {
37 + assert(number > 0);
38 + return MakeFileName(name, number, "ldb");
39 +}
40 +
41 std::string DescriptorFileName(const std::string& dbname, uint64_t number) {
42 assert(number > 0);
43 char buf[100];
44 @@ -106,7 +111,7 @@
45 Slice suffix = rest;
46 if (suffix == Slice(".log")) {
47 *type = kLogFile;
48 - } else if (suffix == Slice(".sst")) {
49 + } else if (suffix == Slice(".sst") || suffix == Slice(".ldb")) {
50 *type = kTableFile;
51 } else if (suffix == Slice(".dbtmp")) {
52 *type = kTempFile;
53 diff -ur leveldb-1.9.0.orig/db/filename.h leveldb-1.9.0/db/filename.h
54 --- leveldb-1.9.0.orig/db/filename.h 2013-01-07 21:07:29.000000000 +0000
55 +++ leveldb-1.9.0/db/filename.h 2014-03-28 23:07:43.000000000 +0000
56 @@ -36,6 +36,7 @@
57 // in the db named by "dbname". The result will be prefixed with
58 // "dbname".
59 extern std::string TableFileName(const std::string& dbname, uint64_t number);
60 +extern std::string LDBTableFileName(const std::string& dbname, uint64_t number);
61
62 // Return the name of the descriptor file for the db named by
63 // "dbname" and the specified incarnation number. The result will be
64 diff -ur leveldb-1.9.0.orig/db/repair.cc leveldb-1.9.0/db/repair.cc
65 --- leveldb-1.9.0.orig/db/repair.cc 2013-01-07 21:07:29.000000000 +0000
66 +++ leveldb-1.9.0/db/repair.cc 2014-03-28 23:13:28.000000000 +0000
67 @@ -263,6 +263,14 @@
68 std::string fname = TableFileName(dbname_, t->meta.number);
69 int counter = 0;
70 Status status = env_->GetFileSize(fname, &t->meta.file_size);
71 + if (!status.ok()) {
72 + // Try alternate file name.
73 + fname = LDBTableFileName(dbname_, t->meta.number);
74 + Status s2 = env_->GetFileSize(fname, &t->meta.file_size);
75 + if (s2.ok()) {
76 + status = Status::OK();
77 + }
78 + }
79 if (status.ok()) {
80 Iterator* iter = table_cache_->NewIterator(
81 ReadOptions(), t->meta.number, t->meta.file_size);
82 diff -ur leveldb-1.9.0.orig/db/table_cache.cc leveldb-1.9.0/db/table_cache.cc
83 --- leveldb-1.9.0.orig/db/table_cache.cc 2013-01-07 21:07:29.000000000 +0000
84 +++ leveldb-1.9.0/db/table_cache.cc 2014-03-28 23:12:39.000000000 +0000
85 @@ -54,6 +54,12 @@
86 RandomAccessFile* file = NULL;
87 Table* table = NULL;
88 s = env_->NewRandomAccessFile(fname, &file);
89 + if (!s.ok()) {
90 + std::string ldb_fname = LDBTableFileName(dbname_, file_number);
91 + if (env_->NewRandomAccessFile(ldb_fname, &file).ok()) {
92 + s = Status::OK();
93 + }
94 + }
95 if (s.ok()) {
96 s = Table::Open(*options_, file, file_size, &table);
97 }