@@ -561,9 +561,17 @@ void RocksDBEngine::start() {
561
561
_options.db_write_buffer_size = opts->_totalWriteBufferSize ;
562
562
}
563
563
564
- // this is cfFamilies.size() + 2 ... but _option needs to be set before
565
- // building cfFamilies
566
- _options.max_write_buffer_number = 7 + 2 ;
564
+ if (!application_features::ApplicationServer::server->options ()->processingResult ().touched (" rocksdb.max-write-buffer-number" )) {
565
+ // user hasn't explicitly set the number of write buffers, so we use a default value based
566
+ // on the number of column families
567
+ // this is cfFamilies.size() + 2 ... but _option needs to be set before
568
+ // building cfFamilies
569
+ // Update max_write_buffer_number above if you change number of families used
570
+ _options.max_write_buffer_number = 7 + 2 ;
571
+ } else if (_options.max_write_buffer_number < 7 + 2 ) {
572
+ // use set the value explicitly, and it is lower than recommended
573
+ LOG_TOPIC (" d5c49" , WARN, Logger::ENGINES) << " ignoring value for option `--rocksdb.max-write-buffer-number` because it is lower than recommended" ;
574
+ }
567
575
568
576
// cf options for definitons (dbs, collections, views, ...)
569
577
rocksdb::ColumnFamilyOptions definitionsCF (_options);
@@ -601,8 +609,9 @@ void RocksDBEngine::start() {
601
609
cfFamilies.emplace_back (" VPackIndex" , vpackFixedPrefCF); // 4
602
610
cfFamilies.emplace_back (" GeoIndex" , fixedPrefCF); // 5
603
611
cfFamilies.emplace_back (" FulltextIndex" , fixedPrefCF); // 6
604
- // DO NOT FORGET TO DESTROY THE CFs ON CLOSE
605
- // Update max_write_buffer_number above if you change number of families used
612
+
613
+ TRI_ASSERT (static_cast <int >(_options.max_write_buffer_number ) >= static_cast <int >(cfFamilies.size ()));
614
+ // Update max_write_buffer_number above if you change number of families used
606
615
607
616
std::vector<rocksdb::ColumnFamilyHandle*> cfHandles;
608
617
size_t const numberOfColumnFamilies = RocksDBColumnFamily::minNumberOfColumnFamilies;
0 commit comments