mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-20 08:30:35 +00:00
db: break heavy include chain from config.hh by extracting replication_strategy_type
Extract replication_strategy_type enum from locator/abstract_replication_strategy.hh into a new lightweight header locator/replication_strategy_type.hh, and use it in db/config.hh instead of the full abstract_replication_strategy.hh. abstract_replication_strategy.hh pulls in a large transitive dependency tree (schema.hh, mutation serializers, etc.) costing ~1.7s per file. With this change, config.hh's incremental parse cost drops from 1.7s to 0.6s. Since ~85 files include config.hh without also including database.hh (which would bring in these deps anyway), this saves ~93s total CPU. Speedup: part of a series measured at -5.8% wall-clock improvement (same-session A/B: 16m14s -> 15m17s at -j16, 16 cores).
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
#include <seastar/util/program-options.hh>
|
||||
#include <seastar/util/log.hh>
|
||||
|
||||
#include "locator/abstract_replication_strategy.hh"
|
||||
#include "locator/replication_strategy_type.hh"
|
||||
#include "seastarx.hh"
|
||||
#include "utils/config_file.hh"
|
||||
#include "utils/enum_option.hh"
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "utils/sequenced_set.hh"
|
||||
#include "utils/simple_hashers.hh"
|
||||
#include "tablets.hh"
|
||||
#include "locator/replication_strategy_type.hh"
|
||||
#include "data_dictionary/consistency_config_options.hh"
|
||||
|
||||
// forward declaration since replica/database.hh includes this file
|
||||
@@ -38,13 +39,6 @@ extern logging::logger rslogger;
|
||||
using inet_address = gms::inet_address;
|
||||
using token = dht::token;
|
||||
|
||||
enum class replication_strategy_type {
|
||||
simple,
|
||||
local,
|
||||
network_topology,
|
||||
everywhere_topology,
|
||||
};
|
||||
|
||||
using replication_strategy_config_option = std::variant<sstring, rack_list>;
|
||||
using replication_strategy_config_options = std::map<sstring, replication_strategy_config_option>;
|
||||
|
||||
|
||||
20
locator/replication_strategy_type.hh
Normal file
20
locator/replication_strategy_type.hh
Normal file
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Copyright (C) 2015-present ScyllaDB
|
||||
*/
|
||||
|
||||
/*
|
||||
* SPDX-License-Identifier: LicenseRef-ScyllaDB-Source-Available-1.1
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
namespace locator {
|
||||
|
||||
enum class replication_strategy_type {
|
||||
simple,
|
||||
local,
|
||||
network_topology,
|
||||
everywhere_topology,
|
||||
};
|
||||
|
||||
} // namespace locator
|
||||
Reference in New Issue
Block a user