mirror of
https://github.com/scylladb/scylladb.git
synced 2026-06-05 06:23:03 +00:00
main: Wire up gossip and friends
Integrate messaging_service and failure_detector and gossiper into urchin. To start a 3 nodes cluster on a single host: ./seastar --listen-address 127.0.0.1 --seed-provider-parameters 127.0.0.1 ./seastar --listen-address 127.0.0.2 --seed-provider-parameters 127.0.0.1 ./seastar --listen-address 127.0.0.3 --seed-provider-parameters 127.0.0.1
This commit is contained in:
27
main.cc
27
main.cc
@@ -11,6 +11,9 @@
|
||||
#include "http/httpd.hh"
|
||||
#include "api/api.hh"
|
||||
#include "db/config.hh"
|
||||
#include "message/messaging_service.hh"
|
||||
#include "gms/failure_detector.hh"
|
||||
#include "gms/gossiper.hh"
|
||||
|
||||
namespace bpo = boost::program_options;
|
||||
|
||||
@@ -44,6 +47,8 @@ int main(int ac, char** av) {
|
||||
uint16_t thrift_port = cfg->rpc_port();
|
||||
uint16_t cql_port = cfg->native_transport_port();
|
||||
uint16_t api_port = opts["api-port"].as<uint16_t>();
|
||||
sstring listen_address = cfg->listen_address();
|
||||
auto seed_provider= cfg->seed_provider();
|
||||
|
||||
return read_config(opts, *cfg).then([cfg, &db]() {
|
||||
return db.start(std::move(*cfg));
|
||||
@@ -67,6 +72,28 @@ int main(int ac, char** av) {
|
||||
}).then([thrift_port] {
|
||||
std::cout << "Thrift server listening on port " << thrift_port << " ...\n";
|
||||
});
|
||||
}).then([listen_address, seed_provider] {
|
||||
const gms::inet_address listen(listen_address);
|
||||
std::set<gms::inet_address> seeds;
|
||||
for (auto& x : seed_provider.parameters) {
|
||||
seeds.emplace(x.first);
|
||||
}
|
||||
net::get_messaging_service().start(listen).then([seeds] {
|
||||
auto& ms = net::get_local_messaging_service();
|
||||
print("Messaging server listening on ip %s port %d ...\n", ms.listen_address(), ms.port());
|
||||
gms::get_failure_detector().start_single().then([seeds] {
|
||||
gms::get_gossiper().start_single().then([seeds] {
|
||||
auto& gossiper = gms::get_local_gossiper();
|
||||
gossiper.set_seeds(seeds);
|
||||
using namespace std::chrono;
|
||||
auto now = high_resolution_clock::now().time_since_epoch();
|
||||
int generation_number = duration_cast<seconds>(now).count();
|
||||
gossiper.start(generation_number).then([] {
|
||||
print("Start gossiper service ...\n");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}).then([&db, api_port, &ctx]{
|
||||
ctx.http_server.start().then([api_port, &ctx] {
|
||||
return set_server(ctx);
|
||||
|
||||
Reference in New Issue
Block a user