Allow the node manager port and object manager port to be set through… (#3130)

* Allow the node manager port and object manager port to be set through ray start.

* Linting

* Fix Java test

* Address comments.
This commit is contained in:
Robert Nishihara
2018-10-28 17:28:41 -07:00
committed by Philipp Moritz
parent a404401dc6
commit fd854ff090
8 changed files with 104 additions and 32 deletions
+4
View File
@@ -29,6 +29,10 @@
namespace ray {
struct ObjectManagerConfig {
/// The port that the object manager should use to listen for connections
/// from other object managers. If this is 0, the object manager will choose
/// its own port.
int object_manager_port;
/// The time in milliseconds to wait before retrying a pull
/// that fails due to client id lookup.
uint pull_timeout_ms;
+14 -10
View File
@@ -20,19 +20,21 @@ int main(int argc, char *argv[]) {
ray::RayLogLevel::INFO,
/*log_dir=*/"");
ray::RayLog::InstallFailureSignalHandler();
RAY_CHECK(argc == 11 || argc == 12);
RAY_CHECK(argc == 13 || argc == 14);
const std::string raylet_socket_name = std::string(argv[1]);
const std::string store_socket_name = std::string(argv[2]);
const std::string node_ip_address = std::string(argv[3]);
const std::string redis_address = std::string(argv[4]);
int redis_port = std::stoi(argv[5]);
int num_initial_workers = std::stoi(argv[6]);
int maximum_startup_concurrency = std::stoi(argv[7]);
const std::string static_resource_list = std::string(argv[8]);
const std::string python_worker_command = std::string(argv[9]);
const std::string java_worker_command = std::string(argv[10]);
const std::string redis_password = (argc == 12 ? std::string(argv[11]) : "");
int object_manager_port = std::stoi(argv[3]);
int node_manager_port = std::stoi(argv[4]);
const std::string node_ip_address = std::string(argv[5]);
const std::string redis_address = std::string(argv[6]);
int redis_port = std::stoi(argv[7]);
int num_initial_workers = std::stoi(argv[8]);
int maximum_startup_concurrency = std::stoi(argv[9]);
const std::string static_resource_list = std::string(argv[10]);
const std::string python_worker_command = std::string(argv[11]);
const std::string java_worker_command = std::string(argv[12]);
const std::string redis_password = (argc == 14 ? std::string(argv[13]) : "");
// Configuration for the node manager.
ray::raylet::NodeManagerConfig node_manager_config;
@@ -51,6 +53,7 @@ int main(int argc, char *argv[]) {
ray::raylet::ResourceSet(std::move(static_resource_conf));
RAY_LOG(DEBUG) << "Starting raylet with static resource configuration: "
<< node_manager_config.resource_config.ToString();
node_manager_config.node_manager_port = node_manager_port;
node_manager_config.num_initial_workers = num_initial_workers;
node_manager_config.num_workers_per_process =
RayConfig::instance().num_workers_per_process();
@@ -76,6 +79,7 @@ int main(int argc, char *argv[]) {
// Configuration for the object manager.
ray::ObjectManagerConfig object_manager_config;
object_manager_config.object_manager_port = object_manager_port;
object_manager_config.store_socket_name = store_socket_name;
object_manager_config.pull_timeout_ms =
RayConfig::instance().object_manager_pull_timeout_ms();
+8
View File
@@ -23,15 +23,23 @@ namespace ray {
namespace raylet {
struct NodeManagerConfig {
/// The node's resource configuration.
ResourceSet resource_config;
/// The port to use for listening to incoming connections. If this is 0 then
/// the node manager will choose its own port.
int node_manager_port;
/// The initial number of workers to create.
int num_initial_workers;
/// The number of workers per process.
int num_workers_per_process;
/// The maximum number of workers that can be started concurrently by a
/// worker pool.
int maximum_startup_concurrency;
/// The commands used to start the worker process, grouped by language.
std::unordered_map<Language, std::vector<std::string>> worker_commands;
/// The time between heartbeats in milliseconds.
uint64_t heartbeat_period_ms;
/// the maximum lineage size.
uint64_t max_lineage_size;
/// The store socket name.
std::string store_socket_name;
+6 -3
View File
@@ -24,10 +24,13 @@ Raylet::Raylet(boost::asio::io_service &main_service, const std::string &socket_
acceptor_(main_service, boost::asio::local::stream_protocol::endpoint(socket_name)),
socket_(main_service),
object_manager_acceptor_(
main_service, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), 0)),
main_service,
boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(),
object_manager_config.object_manager_port)),
object_manager_socket_(main_service),
node_manager_acceptor_(
main_service, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), 0)),
node_manager_acceptor_(main_service, boost::asio::ip::tcp::endpoint(
boost::asio::ip::tcp::v4(),
node_manager_config.node_manager_port)),
node_manager_socket_(main_service) {
// Start listening for clients.
DoAccept();