rocksdb/tools/tool_hooks.cc
Ryan Hancock a6322b9ec6 Allow for Customizable DB Open Hooks for DB Bench (#13326)
Summary:
Pull Request resolved: https://github.com/facebook/rocksdb/pull/13326

This diff introduces ToolHooks, a class which allows for users to interpose their own set of logic for various functionality with db_bench_tool (i.e., various OpenDB implementations).

Reviewed By: anand1976

Differential Revision: D67868126

fbshipit-source-id: df433b0c8a064a86735b92a8ef5f38527dbc9112
2025-01-29 15:30:12 -08:00

94 lines
3.8 KiB
C++

// Copyright (c) Meta Platforms, Inc. and affiliates. 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 "rocksdb/tool_hooks.h"
#include "rocksdb/convenience.h"
#include "rocksdb/db.h"
#include "rocksdb/options.h"
#include "rocksdb/utilities/optimistic_transaction_db.h"
#include "rocksdb/utilities/options_type.h"
#include "rocksdb/utilities/transaction_db.h"
#include "utilities/blob_db/blob_db.h"
namespace ROCKSDB_NAMESPACE {
Status DefaultHooks::Open(const Options& db_options, const std::string& name,
DB** dbptr) {
return DB::Open(db_options, name, dbptr);
};
Status DefaultHooks::Open(
const DBOptions& db_options, const std::string& name,
const std::vector<ColumnFamilyDescriptor>& column_families,
std::vector<ColumnFamilyHandle*>* handles, DB** dbptr) {
return DB::Open(db_options, name, column_families, handles, dbptr);
};
Status DefaultHooks::OpenForReadOnly(const Options& options,
const std::string& name, DB** dbptr,
bool error_if_wal_file_exists = false) {
return DB::OpenForReadOnly(options, name, dbptr, error_if_wal_file_exists);
};
Status DefaultHooks::OpenForReadOnly(
const Options& options, const std::string& name,
const std::vector<ColumnFamilyDescriptor>& column_families,
std::vector<ColumnFamilyHandle*>* handles, DB** dbptr) {
return DB::OpenForReadOnly(options, name, column_families, handles, dbptr);
};
Status DefaultHooks::OpenTransactionDB(
const Options& db_options, const TransactionDBOptions& txn_db_options,
const std::string& dbname, TransactionDB** dbptr) {
return TransactionDB::Open(db_options, txn_db_options, dbname, dbptr);
};
Status DefaultHooks::OpenTransactionDB(
const DBOptions& db_options, const TransactionDBOptions& txn_db_options,
const std::string& dbname,
const std::vector<ColumnFamilyDescriptor>& column_families,
std::vector<ColumnFamilyHandle*>* handles, TransactionDB** dbptr) {
return TransactionDB::Open(db_options, txn_db_options, dbname,
column_families, handles, dbptr);
};
Status DefaultHooks::OpenOptimisticTransactionDB(
const Options& options, const std::string& dbname,
OptimisticTransactionDB** dbptr) {
return OptimisticTransactionDB::Open(options, dbname, dbptr);
};
Status DefaultHooks::OpenOptimisticTransactionDB(
const DBOptions& db_options, const std::string& dbname,
const std::vector<ColumnFamilyDescriptor>& column_families,
std::vector<ColumnFamilyHandle*>* handles,
OptimisticTransactionDB** dbptr) {
return OptimisticTransactionDB::Open(db_options, dbname, column_families,
handles, dbptr);
}
Status DefaultHooks::OpenAsSecondary(const Options& options,
const std::string& name,
const std::string& secondary_path,
DB** dbptr) {
return DB::OpenAsSecondary(options, name, secondary_path, dbptr);
}
Status DefaultHooks::OpenAsFollower(const Options& options,
const std::string& name,
const std::string& leader_path,
std::unique_ptr<DB>* dbptr) {
return DB::OpenAsFollower(options, name, leader_path, dbptr);
};
Status DefaultHooks::Open(const Options& options,
const blob_db::BlobDBOptions& bdb_options,
const std::string& dbname,
blob_db::BlobDB** blob_db) {
return blob_db::BlobDB::Open(options, bdb_options, dbname, blob_db);
}
DefaultHooks defaultHooks;
} // namespace ROCKSDB_NAMESPACE