streaming: Pass db::config& to manager constructor
The stream_manager will bookkeep the streaming bandwidth option, to subscribe on its changes it needs the config reference. It would be better if it was stream_manager::config, but currently subscription on db::config::<stuff> updates is not very shard-friendly, so we need to carry the config reference itself around. Similar trouble is there for compaction_manager. The option is passed through its own config, but the config is created on each shard by database code. Stream manager config would be created once by main code on shard 0. Signed-off-by: Pavel Emelyanov <xemul@scylladb.com>
This commit is contained in:
2
main.cc
2
main.cc
@@ -1210,7 +1210,7 @@ To start the scylla server proper, simply invoke as: scylla server (or just scyl
|
||||
|
||||
debug::the_stream_manager = &stream_manager;
|
||||
supervisor::notify("starting streaming service");
|
||||
stream_manager.start(std::ref(db), std::ref(sys_dist_ks), std::ref(view_update_generator), std::ref(messaging), std::ref(mm), std::ref(gossiper)).get();
|
||||
stream_manager.start(std::ref(*cfg), std::ref(db), std::ref(sys_dist_ks), std::ref(view_update_generator), std::ref(messaging), std::ref(mm), std::ref(gossiper)).get();
|
||||
auto stop_stream_manager = defer_verbose_shutdown("stream manager", [&stream_manager] {
|
||||
// FIXME -- keep the instances alive, just call .stop on them
|
||||
stream_manager.invoke_on_all(&streaming::stream_manager::stop).get();
|
||||
|
||||
@@ -16,12 +16,14 @@
|
||||
#include "streaming/stream_session_state.hh"
|
||||
#include <seastar/core/metrics.hh>
|
||||
#include <seastar/core/coroutine.hh>
|
||||
#include "db/config.hh"
|
||||
|
||||
namespace streaming {
|
||||
|
||||
extern logging::logger sslog;
|
||||
|
||||
stream_manager::stream_manager(sharded<replica::database>& db,
|
||||
stream_manager::stream_manager(db::config& cfg,
|
||||
sharded<replica::database>& db,
|
||||
sharded<db::system_distributed_keyspace>& sys_dist_ks,
|
||||
sharded<db::view::view_update_generator>& view_update_generator,
|
||||
sharded<netw::messaging_service>& ms,
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include <map>
|
||||
|
||||
namespace db {
|
||||
class config;
|
||||
class system_distributed_keyspace;
|
||||
namespace view {
|
||||
class view_update_generator;
|
||||
@@ -99,7 +100,7 @@ private:
|
||||
seastar::metrics::metric_groups _metrics;
|
||||
|
||||
public:
|
||||
stream_manager(sharded<replica::database>& db,
|
||||
stream_manager(db::config& cfg, sharded<replica::database>& db,
|
||||
sharded<db::system_distributed_keyspace>& sys_dist_ks,
|
||||
sharded<db::view::view_update_generator>& view_update_generator,
|
||||
sharded<netw::messaging_service>& ms,
|
||||
|
||||
@@ -621,7 +621,7 @@ public:
|
||||
auto stop_raft_gr = deferred_stop(raft_gr);
|
||||
raft_gr.invoke_on_all(&service::raft_group_registry::start).get();
|
||||
|
||||
stream_manager.start(std::ref(db), std::ref(sys_dist_ks), std::ref(view_update_generator), std::ref(ms), std::ref(mm), std::ref(gossiper)).get();
|
||||
stream_manager.start(std::ref(*cfg), std::ref(db), std::ref(sys_dist_ks), std::ref(view_update_generator), std::ref(ms), std::ref(mm), std::ref(gossiper)).get();
|
||||
auto stop_streaming = defer([&stream_manager] { stream_manager.stop().get(); });
|
||||
|
||||
sharded<semaphore> sst_dir_semaphore;
|
||||
|
||||
Reference in New Issue
Block a user