Revision 7168d16103cb9e48bde9f435c21b0f02186f5d7f authored by Levi Tamasi on 20 December 2019, 02:03:24 UTC, committed by Levi Tamasi on 20 December 2019, 02:29:39 UTC
Summary: BlobDB currently only supports using the default column family. The earlier code enforces this by comparing the `ColumnFamilyHandle` passed to the `Get`/`Put`/etc. call with the handle returned by `DefaultColumnFamily` (which, at the end of the day, comes from `DBImpl::default_cf_handle_`). Since other `ColumnFamilyHandle`s can also point to the default column family, this can reject legitimate requests as well. (As an example, with the earlier code, the handle returned by `BlobDB::Open` cannot actually be used in API calls.) The patch fixes this by comparing only the IDs of the column family handles instead of the pointers themselves. Pull Request resolved: https://github.com/facebook/rocksdb/pull/6226 Test Plan: `make check` Differential Revision: D19187461 Pulled By: ltamasi fbshipit-source-id: 54ce2e12ebb1f07e6d1e70e3b1e0213dfa94bda2
1 parent d848059
sync_point.cc
// Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
// This source code is licensed under both the GPLv2 (found in the
// COPYING file in the root directory) and Apache 2.0 License
// (found in the LICENSE.Apache file in the root directory).
#include "test_util/sync_point.h"
#include "test_util/sync_point_impl.h"
int rocksdb_kill_odds = 0;
std::vector<std::string> rocksdb_kill_prefix_blacklist;
#ifndef NDEBUG
namespace rocksdb {
SyncPoint* SyncPoint::GetInstance() {
static SyncPoint sync_point;
return &sync_point;
}
SyncPoint::SyncPoint() : impl_(new Data) {}
SyncPoint:: ~SyncPoint() {
delete impl_;
}
void SyncPoint::LoadDependency(const std::vector<SyncPointPair>& dependencies) {
impl_->LoadDependency(dependencies);
}
void SyncPoint::LoadDependencyAndMarkers(
const std::vector<SyncPointPair>& dependencies,
const std::vector<SyncPointPair>& markers) {
impl_->LoadDependencyAndMarkers(dependencies, markers);
}
void SyncPoint::SetCallBack(const std::string& point,
const std::function<void(void*)>& callback) {
impl_->SetCallBack(point, callback);
}
void SyncPoint::ClearCallBack(const std::string& point) {
impl_->ClearCallBack(point);
}
void SyncPoint::ClearAllCallBacks() {
impl_->ClearAllCallBacks();
}
void SyncPoint::EnableProcessing() {
impl_->EnableProcessing();
}
void SyncPoint::DisableProcessing() {
impl_->DisableProcessing();
}
void SyncPoint::ClearTrace() {
impl_->ClearTrace();
}
void SyncPoint::Process(const std::string& point, void* cb_arg) {
impl_->Process(point, cb_arg);
}
} // namespace rocksdb
#endif // NDEBUG
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...