|
SWC-DB
v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
|
Go to the documentation of this file.
7 #ifndef swcdb_ranger_RangerEnv_h
8 #define swcdb_ranger_RangerEnv_h
49 return &
m_env->m_rgr_data;
54 return m_env->m_not_accepting;
59 return m_env->m_shuttingdown;
64 return m_env->m_in_process;
69 m_env->m_in_process.fetch_add(count);
74 return m_env->m_in_process_ranges;
79 m_env->m_in_process_ranges.fetch_add(count);
84 return m_env->m_scan_reserved_bytes;
89 m_env->m_scan_reserved_bytes.fetch_add(bytes);
94 m_env->m_scan_reserved_bytes.fetch_sub(bytes);
104 return m_env->mnt_io;
109 return m_env->app_io;
112 template <
typename T_Handler>
114 static void post(T_Handler&& handler) {
115 m_env->app_io->post(std::move(handler));
118 template <
typename T_Handler>
121 m_env->mnt_io->post(std::move(handler));
124 template <
typename T_Handler>
127 m_env->loader_io->post(std::move(handler));
132 return m_env->_resources;
145 return m_env->_columns;
150 return m_env->_update_hdlr.get();
155 return m_env->_reporting;
198 inline static std::shared_ptr<
Rgr>
m_env =
nullptr;
215 #include "swcdb/ranger/db/Columns.h"
220 namespace SWC {
namespace Env {
226 "swc.rgr.Range.req.update.concurrency")),
230 "swc.rgr.Range.CellStore.count.max")),
234 "swc.rgr.Range.CellStore.size.max")),
238 "swc.rgr.Range.CommitLog.rollout.ratio")),
242 "swc.rgr.Range.CommitLog.Compact.cointervaling")),
246 "swc.rgr.Range.CommitLog.Fragment.preload")),
250 "swc.rgr.Range.compaction.percent")),
254 "swc.rgr.Range.CellStore.replication")),
258 "swc.rgr.Range.block.size")),
262 "swc.rgr.Range.block.cells")),
266 "swc.rgr.Range.block.encoding")),
268 Comm::IoContext::make(
271 "swc.rgr.concurrency.relative"),
277 Comm::IoContext::make(
280 "swc.rgr.concurrency.relative"),
282 "swc.rgr.loader.handlers")
286 Comm::IoContext::make(
289 "swc.rgr.concurrency.relative"),
291 "swc.rgr.maintenance.handlers")
297 client::Query::Update::Handlers::Common::make(
300 SWC::Env::
Config::settings()->get_bool(
"swc.rgr.metrics.enabled")
301 ? new Ranger::Metric::Reporting(
app_io)
308 "swc.rgr.ram.allowed.percent"),
311 "swc.rgr.ram.reserved.percent"),
314 "swc.rgr.ram.release.rate"),
319 m_shuttingdown(
false), m_not_accepting(
false),
320 m_in_process(0), m_in_process_ranges(0),
321 m_scan_reserved_bytes(0) {
331 m_env->_compaction->schedule(30000);
335 m_env->m_not_accepting.store(
true);
337 if(
m_env->_reporting)
338 m_env->_reporting->stop();
340 if(
m_env->_compaction)
341 m_env->_compaction->stop();
342 m_env->mnt_io->stop();
343 m_env->loader_io->stop();
345 m_env->_update_hdlr->commit_if_need();
346 m_env->_update_hdlr->wait();
348 m_env->_columns->unload_all(
false);
352 m_env->m_shuttingdown.store(
true);
354 m_env->_resources.stop();
360 std::this_thread::sleep_for(std::chrono::milliseconds(200));
361 m_env->_columns->unload_all(
true);
371 return m_env->_compaction->log_compact_possible();
376 return m_env->_compaction->log_compact_finished();
381 return m_env->_compaction->available();
387 m_env->_compaction->schedule(ms);
397 #endif // swcdb_ranger_RangerEnv_h
static std::shared_ptr< Rgr > m_env
static SWC_CAN_INLINE System::Resources & res() noexcept
static void compaction_schedule(uint32_t ms)
const SWC::Config::Property::Value_uint8_g::Ptr cfg_compact_percent
#define SWC_LOGF(priority, fmt,...)
static SWC_CAN_INLINE void maintenance_post(T_Handler &&handler)
Core::Atomic< int64_t > m_in_process_ranges
static SWC_CAN_INLINE void scan_reserved_bytes_add(uint32_t bytes) noexcept
static SWC_CAN_INLINE DB::RgrData * rgr_data() noexcept
static SWC_CAN_INLINE int64_t in_process_ranges() noexcept
static SWC_CAN_INLINE Ranger::Columns * columns() noexcept
static SWC_CAN_INLINE void in_process_ranges(int64_t count) noexcept
const SWC::Config::Property::Value_uint8_g::Ptr cfg_log_compact_cointervaling
std::shared_ptr< IoContext > IoContextPtr
const SWC::Config::Property::Value_uint8_g::Ptr cfg_req_add_concurrency
const SWC::Config::Property::Value_uint8_g::Ptr cfg_log_rollout_ratio
Core::Atomic< int64_t > m_in_process
System::Resources _resources
Core::Atomic< size_t > m_scan_reserved_bytes
const SWC::Config::Property::Value_int32_g::Ptr cfg_cs_sz
Ranger::Compaction * _compaction
static SWC_CAN_INLINE void block_loader_post(T_Handler &&handler)
Core::AtomicBool m_shuttingdown
static bool log_compact_possible() noexcept
The SWC-DB C++ namespace 'SWC'.
static SWC_CAN_INLINE client::Query::Update::Handlers::Common * updater() noexcept
Comm::IoContextPtr mnt_io
const SWC::Config::Property::Value_enum_g::Ptr cfg_blk_enc
static SWC_CAN_INLINE Comm::IoContextPtr maintenance_io() noexcept
static SWC_CAN_INLINE int64_t in_process() noexcept
static void log_compact_finished() noexcept
const SWC::Config::Property::Value_uint8_g::Ptr cfg_cs_max
Ranger::Columns * _columns
Ranger::Metric::Reporting::Ptr _reporting
std::shared_ptr< Reporting > Ptr
Comm::IoContextPtr app_io
static bool compaction_available() noexcept
std::shared_ptr< Common > Ptr
const SWC::Config::Property::Value_uint8_g::Ptr cfg_log_fragment_preload
Rgr & operator=(const Rgr &)=delete
const SWC::Config::Property::Value_int32_g::Ptr cfg_blk_size
const SWC::Config::Property::Value_int32_g::Ptr cfg_blk_cells
static SWC_CAN_INLINE Ranger::Metric::Reporting::Ptr & metrics_track() noexcept
static SWC_CAN_INLINE void in_process(int64_t count) noexcept
static void reset() noexcept
Comm::IoContextPtr loader_io
static SWC_CAN_INLINE bool is_shuttingdown() noexcept
Rgr & operator=(Rgr &&)=delete
static SWC_CAN_INLINE bool is_not_accepting() noexcept
static SWC_CAN_INLINE size_t scan_reserved_bytes() noexcept
static SWC_CAN_INLINE void scan_reserved_bytes_sub(uint32_t bytes) noexcept
static void wait_if_in_process()
static SWC_CAN_INLINE void post(T_Handler &&handler)
client::Query::Update::Handlers::Common::Ptr _update_hdlr
static void shuttingdown()
Core::AtomicBool m_not_accepting
size_t release(size_t bytes=0)
static SWC_CAN_INLINE Comm::IoContextPtr io() noexcept
const SWC::Config::Property::Value_uint8_g::Ptr cfg_cs_replication
static SWC_CAN_INLINE Rgr * get() noexcept
AtomicBase< bool > AtomicBool