mirror of
https://github.com/matrix-construct/construct
synced 2024-11-15 22:41:12 +01:00
ircd: Use granular __has_includes() for db_fixes; support latter rocksdb reorg.
This commit is contained in:
parent
fb7a18e0dd
commit
0e84f4cb86
2 changed files with 62 additions and 16 deletions
|
@ -20,6 +20,12 @@
|
||||||
#define IRCD_DB_HAS_ENV_MULTIREAD
|
#define IRCD_DB_HAS_ENV_MULTIREAD
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if ROCKSDB_MAJOR > 6 \
|
||||||
|
|| (ROCKSDB_MAJOR == 6 && ROCKSDB_MINOR > 7) \
|
||||||
|
|| (ROCKSDB_MAJOR == 6 && ROCKSDB_MINOR == 7 && ROCKSDB_PATCH >= 3)
|
||||||
|
#define IRCD_DB_HAS_ENV_FILESYSTEM
|
||||||
|
#endif
|
||||||
|
|
||||||
/// Internal environment hookup.
|
/// Internal environment hookup.
|
||||||
///
|
///
|
||||||
struct ircd::db::database::env final
|
struct ircd::db::database::env final
|
||||||
|
|
|
@ -18,19 +18,32 @@
|
||||||
#define ROCKSDB_PLATFORM_POSIX
|
#define ROCKSDB_PLATFORM_POSIX
|
||||||
#define ZSTD_VERSION_NUMBER 0
|
#define ZSTD_VERSION_NUMBER 0
|
||||||
|
|
||||||
#if \
|
#if __has_include("db/write_thread.h")
|
||||||
__has_include("table/block_fetcher.h") && \
|
|
||||||
__has_include("util/delete_scheduler.h") && \
|
|
||||||
__has_include("util/file_util.h") && \
|
|
||||||
__has_include("db/write_thread.h") && \
|
|
||||||
__has_include("table/block_fetcher.h")
|
|
||||||
#include "table/block_fetcher.h"
|
|
||||||
#include "util/delete_scheduler.h"
|
|
||||||
#include "util/file_util.h"
|
|
||||||
#include "db/write_thread.h"
|
#include "db/write_thread.h"
|
||||||
#define IRCD_DB_FIXES_ROCKSDB
|
|
||||||
#else
|
#else
|
||||||
#warning "RocksDB source is not available. Cannot interpose bugfixes."
|
#error "RocksDB db/write_thread.h is not available. Cannot interpose bugfixes."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __has_include("table/block_fetcher.h")
|
||||||
|
#include "table/block_fetcher.h"
|
||||||
|
#else
|
||||||
|
#error "RocksDB table/block_fetcher.h is not available. Cannot interpose bugfixes."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __has_include("util/delete_scheduler.h")
|
||||||
|
#include "util/delete_scheduler.h"
|
||||||
|
#elif __has_include("file/delete_scheduler.h")
|
||||||
|
#include "file/delete_scheduler.h"
|
||||||
|
#else
|
||||||
|
#error "RocksDB delete_scheduler.h is not available. Cannot interpose bugfixes."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __has_include("util/file_util.h")
|
||||||
|
#include "util/file_util.h"
|
||||||
|
#elif __has_include("file/file_util.h")
|
||||||
|
#include "file/file_util.h"
|
||||||
|
#else
|
||||||
|
#error "RocksDB file_util.h is not available. Cannot interpose bugfixes."
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -55,7 +68,7 @@ __has_include("table/block_fetcher.h")
|
||||||
// using kernel-driven threads, this is a deadlock.
|
// using kernel-driven threads, this is a deadlock.
|
||||||
//
|
//
|
||||||
|
|
||||||
#if defined(IRCD_DB_FIXES_ROCKSDB)
|
#if __has_include("db/write_thread.h")
|
||||||
uint8_t
|
uint8_t
|
||||||
rocksdb::WriteThread::BlockingAwaitState(Writer *const w,
|
rocksdb::WriteThread::BlockingAwaitState(Writer *const w,
|
||||||
uint8_t goal_mask)
|
uint8_t goal_mask)
|
||||||
|
@ -94,7 +107,7 @@ rocksdb::WriteThread::BlockingAwaitState(Writer *const w,
|
||||||
// simply not start that thread.
|
// simply not start that thread.
|
||||||
//
|
//
|
||||||
|
|
||||||
#if defined(IRCD_DB_FIXES_ROCKSDB)
|
#if __has_include("util/delete_scheduler.h")
|
||||||
rocksdb::DeleteScheduler::DeleteScheduler(Env* env,
|
rocksdb::DeleteScheduler::DeleteScheduler(Env* env,
|
||||||
int64_t rate_bytes_per_sec,
|
int64_t rate_bytes_per_sec,
|
||||||
Logger* info_log,
|
Logger* info_log,
|
||||||
|
@ -119,7 +132,34 @@ max_trash_db_ratio_(max_trash_db_ratio)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(IRCD_DB_FIXES_ROCKSDB)
|
#if __has_include("file/delete_scheduler.h") && defined(IRCD_DB_HAVE_ENV_FILESYSTEM)
|
||||||
|
rocksdb::DeleteScheduler::DeleteScheduler(Env* env,
|
||||||
|
FileSystem *fs,
|
||||||
|
int64_t rate_bytes_per_sec,
|
||||||
|
Logger* info_log,
|
||||||
|
SstFileManagerImpl* sst_file_manager,
|
||||||
|
double max_trash_db_ratio,
|
||||||
|
uint64_t bytes_max_delete_chunk)
|
||||||
|
:env_(env),
|
||||||
|
fs_(fs),
|
||||||
|
total_trash_size_(0),
|
||||||
|
rate_bytes_per_sec_(rate_bytes_per_sec),
|
||||||
|
pending_files_(0),
|
||||||
|
bytes_max_delete_chunk_(bytes_max_delete_chunk),
|
||||||
|
closing_(false),
|
||||||
|
cv_(&mu_),
|
||||||
|
info_log_(info_log),
|
||||||
|
sst_file_manager_(sst_file_manager),
|
||||||
|
max_trash_db_ratio_(max_trash_db_ratio)
|
||||||
|
{
|
||||||
|
assert(sst_file_manager != nullptr);
|
||||||
|
assert(max_trash_db_ratio >= 0);
|
||||||
|
// bg_thread_.reset(
|
||||||
|
// new port::Thread(&DeleteScheduler::BackgroundEmptyTrash, this));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __has_include("util/delete_scheduler.h") || __has_include("file/delete_scheduler.h")
|
||||||
rocksdb::DeleteScheduler::~DeleteScheduler()
|
rocksdb::DeleteScheduler::~DeleteScheduler()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -131,7 +171,7 @@ rocksdb::DeleteScheduler::~DeleteScheduler()
|
||||||
// and directly conduct the deletion.
|
// and directly conduct the deletion.
|
||||||
//
|
//
|
||||||
|
|
||||||
#if defined(IRCD_DB_FIXES_ROCKSDB)
|
#if __has_include("util/delete_scheduler.h")
|
||||||
rocksdb::Status
|
rocksdb::Status
|
||||||
rocksdb::DeleteSSTFile(const ImmutableDBOptions *db_options,
|
rocksdb::DeleteSSTFile(const ImmutableDBOptions *db_options,
|
||||||
const std::string& fname,
|
const std::string& fname,
|
||||||
|
@ -153,7 +193,7 @@ rocksdb::DeleteSSTFile(const ImmutableDBOptions *db_options,
|
||||||
// available.
|
// available.
|
||||||
//
|
//
|
||||||
|
|
||||||
#if defined(IRCD_DB_FIXES_ROCKSDB) && defined(IRCD_DB_BYPASS_CHECKSUM)
|
#if (__has_include("util/file_util.h") || __has_include("file/file_util.h")) && defined(IRCD_DB_BYPASS_CHECKSUM)
|
||||||
void
|
void
|
||||||
rocksdb::BlockFetcher::CheckBlockChecksum()
|
rocksdb::BlockFetcher::CheckBlockChecksum()
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue