Hotfix the bug in table cache's GetSliceForFileNumber
Forgot to fix this problem in master branch. Already fixed it in performance branch.
This commit is contained in:
parent
b60c14f6ee
commit
9281a826f1
@ -29,9 +29,9 @@ static void UnrefEntry(void* arg1, void* arg2) {
|
|||||||
cache->Release(h);
|
cache->Release(h);
|
||||||
}
|
}
|
||||||
|
|
||||||
static Slice GetSliceForFileNumber(uint64_t file_number) {
|
static Slice GetSliceForFileNumber(uint64_t* file_number) {
|
||||||
return Slice(reinterpret_cast<const char*>(&file_number),
|
return Slice(reinterpret_cast<const char*>(file_number),
|
||||||
sizeof(file_number));
|
sizeof(*file_number));
|
||||||
}
|
}
|
||||||
|
|
||||||
TableCache::TableCache(const std::string& dbname,
|
TableCache::TableCache(const std::string& dbname,
|
||||||
@ -55,7 +55,7 @@ Status TableCache::FindTable(const EnvOptions& toptions,
|
|||||||
Cache::Handle** handle, bool* table_io,
|
Cache::Handle** handle, bool* table_io,
|
||||||
const bool no_io) {
|
const bool no_io) {
|
||||||
Status s;
|
Status s;
|
||||||
Slice key = GetSliceForFileNumber(file_number);
|
Slice key = GetSliceForFileNumber(&file_number);
|
||||||
*handle = cache_->Lookup(key);
|
*handle = cache_->Lookup(key);
|
||||||
if (*handle == nullptr) {
|
if (*handle == nullptr) {
|
||||||
if (no_io) { // Dont do IO and return a not-found status
|
if (no_io) { // Dont do IO and return a not-found status
|
||||||
@ -168,7 +168,7 @@ bool TableCache::PrefixMayMatch(const ReadOptions& options,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void TableCache::Evict(uint64_t file_number) {
|
void TableCache::Evict(uint64_t file_number) {
|
||||||
cache_->Erase(GetSliceForFileNumber(file_number));
|
cache_->Erase(GetSliceForFileNumber(&file_number));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace rocksdb
|
} // namespace rocksdb
|
||||||
|
Loading…
x
Reference in New Issue
Block a user