mirror of https://gitee.com/bigwinds/arangodb
Merge branch 'devel' of https://github.com/arangodb/arangodb into devel
This commit is contained in:
commit
5464763c8e
|
@ -565,7 +565,7 @@ int ContinuousSyncer::processDocument(TRI_replication_operation_e type,
|
|||
return TRI_ERROR_REPLICATION_UNEXPECTED_TRANSACTION;
|
||||
}
|
||||
|
||||
trx->addCollectionAtRuntime(cid, "", AccessMode::Type::WRITE);
|
||||
trx->addCollectionAtRuntime(cid, "", AccessMode::Type::EXCLUSIVE);
|
||||
int res = applyCollectionDumpMarker(*trx, trx->name(cid), type, old, doc, errorMsg);
|
||||
|
||||
if (res == TRI_ERROR_ARANGO_UNIQUE_CONSTRAINT_VIOLATED && isSystem) {
|
||||
|
@ -580,7 +580,7 @@ int ContinuousSyncer::processDocument(TRI_replication_operation_e type,
|
|||
// standalone operation
|
||||
// update the apply tick for all standalone operations
|
||||
SingleCollectionTransaction trx(transaction::StandaloneContext::Create(_vocbase),
|
||||
cid, AccessMode::Type::WRITE);
|
||||
cid, AccessMode::Type::EXCLUSIVE);
|
||||
|
||||
if (_supportsSingleOperations) {
|
||||
trx.addHint(transaction::Hints::Hint::SINGLE_OPERATION);
|
||||
|
|
|
@ -735,7 +735,7 @@ int InitialSyncer::handleCollectionDump(arangodb::LogicalCollection* col,
|
|||
if (res.ok()) {
|
||||
SingleCollectionTransaction trx(
|
||||
transaction::StandaloneContext::Create(_vocbase), col->cid(),
|
||||
AccessMode::Type::WRITE);
|
||||
AccessMode::Type::EXCLUSIVE);
|
||||
|
||||
res = trx.begin();
|
||||
|
||||
|
@ -937,7 +937,7 @@ int InitialSyncer::handleCollectionSync(arangodb::LogicalCollection* col,
|
|||
// remote collection has no documents. now truncate our local collection
|
||||
SingleCollectionTransaction trx(
|
||||
transaction::StandaloneContext::Create(_vocbase), col->cid(),
|
||||
AccessMode::Type::WRITE);
|
||||
AccessMode::Type::EXCLUSIVE);
|
||||
|
||||
Result res = trx.begin();
|
||||
|
||||
|
@ -1095,7 +1095,7 @@ int InitialSyncer::handleCollection(VPackSlice const& parameters,
|
|||
|
||||
SingleCollectionTransaction trx(
|
||||
transaction::StandaloneContext::Create(_vocbase), col->cid(),
|
||||
AccessMode::Type::WRITE);
|
||||
AccessMode::Type::EXCLUSIVE);
|
||||
|
||||
Result res = trx.begin();
|
||||
|
||||
|
@ -1212,7 +1212,7 @@ int InitialSyncer::handleCollection(VPackSlice const& parameters,
|
|||
try {
|
||||
SingleCollectionTransaction trx(
|
||||
transaction::StandaloneContext::Create(_vocbase), col->cid(),
|
||||
AccessMode::Type::WRITE);
|
||||
AccessMode::Type::EXCLUSIVE);
|
||||
|
||||
res = trx.begin();
|
||||
|
||||
|
|
|
@ -236,6 +236,7 @@ DatabaseFeature::DatabaseFeature(ApplicationServer* server)
|
|||
setOptional(false);
|
||||
requiresElevatedPrivileges(false);
|
||||
startsAfter("Authentication");
|
||||
startsAfter("CacheManager");
|
||||
startsAfter("DatabasePath");
|
||||
startsAfter("EngineSelector");
|
||||
startsAfter("MMFilesLogfileManager");
|
||||
|
@ -243,6 +244,7 @@ DatabaseFeature::DatabaseFeature(ApplicationServer* server)
|
|||
startsAfter("MMFilesEngine");
|
||||
startsAfter("MMFilesPersistentIndex");
|
||||
startsAfter("RocksDBEngine");
|
||||
startsAfter("Scheduler");
|
||||
}
|
||||
|
||||
DatabaseFeature::~DatabaseFeature() {
|
||||
|
|
|
@ -138,10 +138,6 @@ int RocksDBComparator::compareIndexedValues(VPackSlice const& lhs,
|
|||
size_t const rLength = rhs.length();
|
||||
size_t const n = lLength < rLength ? rLength : lLength;
|
||||
|
||||
// LOG_TOPIC(ERR, Logger::FIXME) << "COMPARING INDEX VALUES: " << lhs.toJson()
|
||||
// << "; " << rhs.toJson() << "; LLENGTH: " << lLength << ", RLENGTH: " <<
|
||||
// rLength << ", N: " << n;
|
||||
|
||||
for (size_t i = 0; i < n; ++i) {
|
||||
int res = arangodb::basics::VelocyPackHelper::compare(
|
||||
(i < lLength ? lhs[i] : VPackSlice::noneSlice()),
|
||||
|
|
|
@ -117,10 +117,6 @@ RocksDBEntryType RocksDBKey::type(RocksDBKey const& key) {
|
|||
return type(key._buffer.data(), key._buffer.size());
|
||||
}
|
||||
|
||||
RocksDBEntryType RocksDBKey::type(rocksdb::Slice const& slice) {
|
||||
return type(slice.data(), slice.size());
|
||||
}
|
||||
|
||||
uint64_t RocksDBKey::counterObjectId(rocksdb::Slice const& s) {
|
||||
TRI_ASSERT(s.size() >= (sizeof(char) + sizeof(uint64_t)));
|
||||
return uint64FromPersistent(s.data() + sizeof(char));
|
||||
|
@ -351,12 +347,6 @@ RocksDBKey::RocksDBKey(RocksDBEntryType type, uint64_t first,
|
|||
|
||||
// ====================== Private Methods ==========================
|
||||
|
||||
RocksDBEntryType RocksDBKey::type(char const* data, size_t size) {
|
||||
TRI_ASSERT(data != nullptr);
|
||||
TRI_ASSERT(size >= sizeof(char));
|
||||
return static_cast<RocksDBEntryType>(data[0]);
|
||||
}
|
||||
|
||||
TRI_voc_tick_t RocksDBKey::databaseId(char const* data, size_t size) {
|
||||
TRI_ASSERT(data != nullptr);
|
||||
TRI_ASSERT(size >= sizeof(char));
|
||||
|
|
|
@ -142,7 +142,10 @@ class RocksDBKey {
|
|||
/// May be called on any valid key (in our keyspace)
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
static RocksDBEntryType type(RocksDBKey const&);
|
||||
static RocksDBEntryType type(rocksdb::Slice const&);
|
||||
static inline RocksDBEntryType type(rocksdb::Slice const& slice) {
|
||||
return type(slice.data(), slice.size());
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief Extracts the object id
|
||||
|
@ -249,7 +252,12 @@ class RocksDBKey {
|
|||
arangodb::StringRef const& third);
|
||||
|
||||
private:
|
||||
static RocksDBEntryType type(char const* data, size_t size);
|
||||
static inline RocksDBEntryType type(char const* data, size_t size) {
|
||||
TRI_ASSERT(data != nullptr);
|
||||
TRI_ASSERT(size >= sizeof(char));
|
||||
return static_cast<RocksDBEntryType>(data[0]);
|
||||
}
|
||||
|
||||
static TRI_voc_tick_t databaseId(char const* data, size_t size);
|
||||
static TRI_voc_cid_t collectionId(char const* data, size_t size);
|
||||
static TRI_voc_cid_t objectId(char const* data, size_t size);
|
||||
|
|
|
@ -221,7 +221,7 @@ bool Scheduler::start(ConditionVariable* cv) {
|
|||
TRI_ASSERT(_nrMinimum <= _nrDesired);
|
||||
TRI_ASSERT(_nrDesired <= _nrMaximum);
|
||||
|
||||
for (size_t i = 0; i < (size_t)_nrMinimum; ++i) {
|
||||
for (uint64_t i = 0; i < _nrMinimum; ++i) {
|
||||
startNewThread();
|
||||
}
|
||||
|
||||
|
|
|
@ -121,29 +121,29 @@ class Scheduler {
|
|||
std::atomic<bool> _stopping;
|
||||
|
||||
// maximal number of outstanding user requests
|
||||
int64_t const _maxQueueSize;
|
||||
uint64_t const _maxQueueSize;
|
||||
|
||||
// minimum number of running SchedulerThreads
|
||||
int64_t const _nrMinimum;
|
||||
uint64_t const _nrMinimum;
|
||||
|
||||
// desired number of running SchedulerThreads
|
||||
int64_t const _nrDesired;
|
||||
uint64_t const _nrDesired;
|
||||
|
||||
// maximal number of outstanding user requests
|
||||
int64_t const _nrMaximum;
|
||||
uint64_t const _nrMaximum;
|
||||
|
||||
// number of jobs currently been worked on
|
||||
// use signed values just in case we have an underflow
|
||||
std::atomic<int64_t> _nrWorking;
|
||||
std::atomic<uint64_t> _nrWorking;
|
||||
|
||||
// number of jobs that are currently been queued, but not worked on
|
||||
std::atomic<int64_t> _nrQueued;
|
||||
std::atomic<uint64_t> _nrQueued;
|
||||
|
||||
// number of jobs that entered a potentially blocking situation
|
||||
std::atomic<int64_t> _nrBlocked;
|
||||
std::atomic<uint64_t> _nrBlocked;
|
||||
|
||||
// number of SchedulerThread that are running
|
||||
std::atomic<int64_t> _nrRunning;
|
||||
std::atomic<uint64_t> _nrRunning;
|
||||
|
||||
std::unique_ptr<JobQueue> _jobQueue;
|
||||
|
||||
|
|
|
@ -52,7 +52,6 @@ SchedulerFeature::SchedulerFeature(
|
|||
: ApplicationFeature(server, "Scheduler"), _scheduler(nullptr) {
|
||||
setOptional(true);
|
||||
requiresElevatedPrivileges(false);
|
||||
startsAfter("Database");
|
||||
startsAfter("FileDescriptors");
|
||||
startsAfter("Logger");
|
||||
startsAfter("WorkMonitor");
|
||||
|
@ -260,10 +259,10 @@ bool CtrlHandler(DWORD eventType) {
|
|||
|
||||
void SchedulerFeature::buildScheduler() {
|
||||
_scheduler =
|
||||
std::make_unique<Scheduler>(static_cast<uint64_t>(_nrMinimalThreads),
|
||||
static_cast<uint64_t>(_nrServerThreads),
|
||||
static_cast<uint64_t>(_nrMaximalThreads),
|
||||
static_cast<uint64_t>(_queueSize));
|
||||
std::make_unique<Scheduler>(_nrMinimalThreads,
|
||||
_nrServerThreads,
|
||||
_nrMaximalThreads,
|
||||
_queueSize);
|
||||
|
||||
SCHEDULER = _scheduler.get();
|
||||
}
|
||||
|
|
|
@ -78,6 +78,7 @@ class StorageEngine : public application_features::ApplicationFeature {
|
|||
// storage engines must not use elevated privileges for files etc
|
||||
requiresElevatedPrivileges(false);
|
||||
|
||||
startsAfter("CacheManager");
|
||||
startsAfter("DatabasePath");
|
||||
startsAfter("EngineSelector");
|
||||
startsAfter("FileDescriptors");
|
||||
|
|
File diff suppressed because one or more lines are too long
Binary file not shown.
|
@ -420,13 +420,13 @@
|
|||
|
||||
<div id="requests">
|
||||
<div class="contentDiv">
|
||||
<div class="dashboard-row pure-u"> <% largeChart("requestsChart", "Requests per Second") %> <% tendency("Request Types", "asyncRequests", false); %> <% tendency("Number of Client Connections", "clientConnections", false); %> </div>
|
||||
<div class="dashboard-row pure-u cluster-values" id="node-info" style="width: 100%; margin-top: 0; padding-right: 2px; box-sizing: border-box;">
|
||||
</div> <% if (hideStatistics !== true) { %> <div class="dashboard-row pure-u"> <% largeChart("requestsChart", "Requests per Second") %> <% tendency("Request Types", "asyncRequests", false); %> <% tendency("Number of Client Connections", "clientConnections", false); %> </div>
|
||||
|
||||
<div class="dashboard-row pure-u small-label-padding"> <% largeChart("dataTransferChart", "Transfer Size per Second") %> <% smallChart("dataTransferDistribution", "Transfer Size per Second (distribution)", false) %> </div>
|
||||
|
||||
<div class="dashboard-row pure-u small-label-padding"> <% largeChart("totalTimeChart", "Average Request Time (seconds)") %> <% smallChart("totalTimeDistribution", "Average Request Time (distribution)", false) %> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div> <% } %> </div>
|
||||
|
||||
<div id="system" class="tendency-box-sizing" style="display: none";>
|
||||
|
||||
|
@ -2161,21 +2161,18 @@ if (list.length > 0) {
|
|||
|
||||
<div class="pure-g cluster-nodes-title pure-table pure-table-header pure-title" style="clear: both">
|
||||
<div class="pure-table-row">
|
||||
<div class="pure-u-9-24 left">Name</div>
|
||||
<div class="pure-u-9-24 left">Endpoint</div>
|
||||
<div class="pure-u-2-24 mid hide-small">Since</div>
|
||||
<div class="pure-u-2-24 mid">Info</div>
|
||||
<div class="pure-u-2-24 mid">Status</div>
|
||||
<div class="pure-u-10-24 left">Name</div>
|
||||
<div class="pure-u-10-24 left">Endpoint</div>
|
||||
<div class="pure-u-3-24 mid hide-small">Since</div>
|
||||
<div class="pure-u-1-24 mid"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pure-g cluster-nodes coords-nodes pure-table pure-table-body"> <% _.each(coords, function(node, name) { %> <% var id = name + "-node"; %> <div class="pure-table-row <%= disabled %>" node="<%= id %>">
|
||||
|
||||
<div class="pure-u-9-24 left"> <%= node.ShortName %> <i class="fa fa-bar-chart"></i> <% if(node.Status === 'FAILED') { %> <i class="fa fa-trash-o"></i> <% } %> </div>
|
||||
<div class="pure-u-9-24 left"><%= node.Endpoint %></div> <% var formatted = (node.LastHeartbeatAcked).substr(11, 18).slice(0, -1); %> <div class="pure-u-2-24 hide-small mid"><%= formatted %></div>
|
||||
|
||||
<div class="pure-u-2-24 mid"><i class="fa fa-info-circle"></i></div> <% if(node.Status === 'GOOD') { %> <div class="pure-u-2-24 mid state"><i class="fa fa-check-circle tippy" title="<%= node.LastHeartbeatStatus %>"></i></div> <% } else { %> <div class="pure-u-2-24 mid state"><i class="fa fa-exclamation-circle"></i></div> <% } %> </div> <% }); %> </div>
|
||||
</div> <% } %> <% if (Object.keys(dbs).length > 0) { %> <% var disabled = ''; %> <% disabled = " disabled"; %> <div class="pure-u-1-1 pure-u-md-1-1 pure-u-lg-1-1 pure-u-xl-1-2">
|
||||
<div class="pure-u-10-24 left"> <%= node.ShortName %> <i class="fa fa-bar-chart"></i> <% if(node.Status === 'FAILED') { %> <i class="fa fa-trash-o"></i> <% } %> </div>
|
||||
<div class="pure-u-10-24 left"><%= node.Endpoint %></div> <% var formatted = (node.LastHeartbeatAcked).substr(11, 18).slice(0, -1); %> <div class="pure-u-3-24 hide-small mid"><%= formatted %></div> <% if(node.Status === 'GOOD') { %> <div class="pure-u-1-24 mid state"><i class="fa fa-check-circle tippy" title="<%= node.LastHeartbeatStatus %>"></i></div> <% } else { %> <div class="pure-u-1-24 mid state"><i class="fa fa-exclamation-circle"></i></div> <% } %> </div> <% }); %> </div>
|
||||
</div> <% } %> <% if (Object.keys(dbs).length > 0) { %> <% var disabled = ''; %> <% disabled = " dbserver"; %> <div class="pure-u-1-1 pure-u-md-1-1 pure-u-lg-1-1 pure-u-xl-1-2">
|
||||
<div class="sectionHeader pure-g">
|
||||
<div class="pure-u-1-5">
|
||||
<div class="title">
|
||||
|
@ -2199,18 +2196,15 @@ if (list.length > 0) {
|
|||
|
||||
<div class="pure-g cluster-nodes-title pure-table pure-table-header pure-title">
|
||||
<div class="pure-table-row">
|
||||
<div class="pure-u-9-24 left">Name</div>
|
||||
<div class="pure-u-9-24 left">Endpoint</div>
|
||||
<div class="pure-u-2-24 mid hide-small">Since</div>
|
||||
<div class="pure-u-2-24 mid">Info</div>
|
||||
<div class="pure-u-2-24 mid">Status</div>
|
||||
<div class="pure-u-10-24 left">Name</div>
|
||||
<div class="pure-u-10-24 left">Endpoint</div>
|
||||
<div class="pure-u-3-24 mid hide-small">Since</div>
|
||||
<div class="pure-u-1-24 mid"></div>
|
||||
</div>
|
||||
</div> <% } %> <div class="pure-g cluster-nodes dbs-nodes pure-table pure-table-body"> <% _.each(dbs, function(node, name) { %> <% var id = name + "-node"; %> <div class="pure-table-row <%= disabled %>" node="<%= id %>">
|
||||
|
||||
<div class="pure-u-9-24 left"><%= node.ShortName %></div>
|
||||
<div class="pure-u-9-24 left"><%= node.Endpoint %></div> <% var formatted = (node.LastHeartbeatAcked).substr(11, 18).slice(0, -1); %> <div class="pure-u-2-24 mid hide-small"><%= formatted %></div>
|
||||
|
||||
<div class="pure-u-2-24 mid"><i class="fa fa-info-circle"></i></div> <% if(node.Status === 'GOOD') { %> <div class="pure-u-2-24 mid state"><i class="fa fa-check-circle tippy" title="<%= node.LastHeartbeatStatus %>"></i></div> <% } else { %> <div class="pure-u-2-24 mid state"><i class="fa fa-exclamation-circle"></i></div> <% } %> </div> <% }); %> </div>
|
||||
<div class="pure-u-10-24 left"><%= node.ShortName %></div>
|
||||
<div class="pure-u-10-24 left"><%= node.Endpoint %></div> <% var formatted = (node.LastHeartbeatAcked).substr(11, 18).slice(0, -1); %> <div class="pure-u-3-24 mid hide-small"><%= formatted %></div> <% if(node.Status === 'GOOD') { %> <div class="pure-u-1-24 mid state"><i class="fa fa-check-circle tippy" title="<%= node.LastHeartbeatStatus %>"></i></div> <% } else { %> <div class="pure-u-1-24 mid state"><i class="fa fa-exclamation-circle"></i></div> <% } %> </div> <% }); %> </div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
@ -2785,4 +2779,4 @@ var cutByResolution = function (str) {
|
|||
</div>
|
||||
|
||||
<div id="workMonitorContent" class="innerContent">
|
||||
</div></script></head><body><nav class="navbar" style="display: none"><div class="primary"><div class="navlogo"><a class="logo big" href="#"><img id="ArangoDBLogo" class="arangodbLogo" src="img/arangodb-edition-optimized.svg"></a><a class="logo small" href="#"><img class="arangodbLogo" src="img/arangodb_logo_small.png"></a><a class="version"><span id="currentVersion"></span></a></div><div class="statmenu" id="statisticBar"></div><div class="navmenu" id="navigationBar"></div></div></nav><div id="modalPlaceholder"></div><div class="bodyWrapper" style="display: none"><div class="centralRow"><div id="navbar2" class="navbarWrapper secondary"><div class="subnavmenu" id="subNavigationBar"></div></div><div class="resizecontainer contentWrapper"><div id="loadingScreen" class="loadingScreen" style="display: none"><i class="fa fa-circle-o-notch fa-spin fa-3x fa-fw margin-bottom"></i> <span class="sr-only">Loading...</span></div><div id="content" class="centralContent"></div><footer class="footer"><div id="footerBar"></div></footer></div></div></div><div id="progressPlaceholder" style="display:none"></div><div id="spotlightPlaceholder" style="display:none"></div><div id="graphSettingsContent" style="display: none"></div><div id="filterSelectDiv" style="display:none"></div><div id="offlinePlaceholder" style="display:none"><div class="offline-div"><div class="pure-u"><div class="pure-u-1-4"></div><div class="pure-u-1-2 offline-window"><div class="offline-header"><h3>You have been disconnected from the server</h3></div><div class="offline-body"><p>The connection to the server has been lost. The server may be under heavy load.</p><p>Trying to reconnect in <span id="offlineSeconds">10</span> seconds.</p><p class="animation_state"><span><button class="button-success">Reconnect now</button></span></p></div></div><div class="pure-u-1-4"></div></div></div></div><div class="arangoFrame" style=""><div class="outerDiv"><div class="innerDiv"></div></div></div><script src="libs.js?version=1493730160275"></script><script src="app.js?version=1493730160275"></script></body></html>
|
||||
</div></script></head><body><nav class="navbar" style="display: none"><div class="primary"><div class="navlogo"><a class="logo big" href="#"><img id="ArangoDBLogo" class="arangodbLogo" src="img/arangodb-edition-optimized.svg"></a><a class="logo small" href="#"><img class="arangodbLogo" src="img/arangodb_logo_small.png"></a><a class="version"><span id="currentVersion"></span></a></div><div class="statmenu" id="statisticBar"></div><div class="navmenu" id="navigationBar"></div></div></nav><div id="modalPlaceholder"></div><div class="bodyWrapper" style="display: none"><div class="centralRow"><div id="navbar2" class="navbarWrapper secondary"><div class="subnavmenu" id="subNavigationBar"></div></div><div class="resizecontainer contentWrapper"><div id="loadingScreen" class="loadingScreen" style="display: none"><i class="fa fa-circle-o-notch fa-spin fa-3x fa-fw margin-bottom"></i> <span class="sr-only">Loading...</span></div><div id="content" class="centralContent"></div><footer class="footer"><div id="footerBar"></div></footer></div></div></div><div id="progressPlaceholder" style="display:none"></div><div id="spotlightPlaceholder" style="display:none"></div><div id="graphSettingsContent" style="display: none"></div><div id="filterSelectDiv" style="display:none"></div><div id="offlinePlaceholder" style="display:none"><div class="offline-div"><div class="pure-u"><div class="pure-u-1-4"></div><div class="pure-u-1-2 offline-window"><div class="offline-header"><h3>You have been disconnected from the server</h3></div><div class="offline-body"><p>The connection to the server has been lost. The server may be under heavy load.</p><p>Trying to reconnect in <span id="offlineSeconds">10</span> seconds.</p><p class="animation_state"><span><button class="button-success">Reconnect now</button></span></p></div></div><div class="pure-u-1-4"></div></div></div></div><div class="arangoFrame" style=""><div class="outerDiv"><div class="innerDiv"></div></div></div><script src="libs.js?version=1494419319160"></script><script src="app.js?version=1494419319160"></script></body></html>
|
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
|
@ -624,7 +624,7 @@ function ReplicationSuite() {
|
|||
assertTrue(replication.applier.state().state.running);
|
||||
return "wait";
|
||||
} catch (err) {
|
||||
// task does not exist. we're done
|
||||
// task does not exist anymore. we're done
|
||||
state.lastLogTick = replication.logger.state().state.lastLogTick;
|
||||
state.checksum = collectionChecksum(cn);
|
||||
state.count = collectionCount(cn);
|
||||
|
|
|
@ -32,6 +32,8 @@
|
|||
|
||||
#include <rocksdb/options.h>
|
||||
|
||||
#include <thread>
|
||||
|
||||
using namespace arangodb;
|
||||
using namespace arangodb::application_features;
|
||||
using namespace arangodb::options;
|
||||
|
@ -71,9 +73,15 @@ RocksDBOptionFeature::RocksDBOptionFeature(
|
|||
_useDirectWrites(rocksDBDefaults.use_direct_writes),
|
||||
_useFSync(rocksDBDefaults.use_fsync),
|
||||
_skipCorrupted(false) {
|
||||
|
||||
setOptional(true);
|
||||
requiresElevatedPrivileges(false);
|
||||
startsAfter("DatabasePath");
|
||||
|
||||
// increase parallelism and re-fetch the number of threads
|
||||
rocksDBDefaults.IncreaseParallelism(std::thread::hardware_concurrency());
|
||||
_numThreadsHigh = rocksDBDefaults.max_background_flushes;
|
||||
_numThreadsLow = rocksDBDefaults.max_background_compactions;
|
||||
}
|
||||
|
||||
void RocksDBOptionFeature::collectOptions(
|
||||
|
|
Loading…
Reference in New Issue