Change db_connect to allow different arguments from different processes. (#142)

* Allow db_connect to take a variable number of arguments.

* Fix tests.

* Fixes.

* Formatting.

* Fixes.

* Simplifications.

* Fix typo.
This commit is contained in:
Robert Nishihara
2016-12-20 20:21:35 -08:00
committed by Philipp Moritz
parent 0ca0864856
commit c9c1b3e6af
17 changed files with 245 additions and 190 deletions
+20 -3
View File
@@ -444,6 +444,7 @@ void remove_fetch_request(plasma_manager_state *manager_state,
}
plasma_manager_state *init_plasma_manager_state(const char *store_socket_name,
const char *manager_socket_name,
const char *manager_addr,
int manager_port,
const char *db_addr,
@@ -457,8 +458,23 @@ plasma_manager_state *init_plasma_manager_state(const char *store_socket_name,
state->object_wait_requests_local = NULL;
state->object_wait_requests_remote = NULL;
if (db_addr) {
/* Get the manager port as a string. */
UT_string *manager_address_str;
utstring_new(manager_address_str);
utstring_printf(manager_address_str, "%s:%d", manager_addr, manager_port);
int num_args = 6;
const char **db_connect_args = malloc(sizeof(char *) * num_args);
db_connect_args[0] = "store_socket_name";
db_connect_args[1] = store_socket_name;
db_connect_args[2] = "manager_socket_name";
db_connect_args[3] = manager_socket_name;
db_connect_args[4] = "address";
db_connect_args[5] = utstring_body(manager_address_str);
state->db = db_connect(db_addr, db_port, "plasma_manager", manager_addr,
manager_port);
num_args, db_connect_args);
utstring_free(manager_address_str);
free(db_connect_args);
db_attach(state->db, state->loop, false);
} else {
state->db = NULL;
@@ -1405,8 +1421,9 @@ void start_server(const char *store_socket_name,
int local_sock = bind_ipc_sock(manager_socket_name, false);
CHECKM(local_sock >= 0, "Unable to bind local manager socket");
g_manager_state = init_plasma_manager_state(store_socket_name, master_addr,
port, db_addr, db_port);
g_manager_state =
init_plasma_manager_state(store_socket_name, manager_socket_name,
master_addr, port, db_addr, db_port);
CHECK(g_manager_state);
CHECK(listen(remote_sock, 5) != -1);
+2
View File
@@ -32,6 +32,7 @@ typedef struct client_object_request client_object_request;
* function.
*
* @param store_socket_name The socket name used to connect to the local store.
* @param manager_socket_name The socket name used to connect to the manager.
* @param manager_addr Our IP address.
* @param manager_port The IP port that we listen on.
* @param db_addr The IP address of the database to connect to. If this is NULL,
@@ -41,6 +42,7 @@ typedef struct client_object_request client_object_request;
* @return A pointer to the initialized plasma manager state.
*/
plasma_manager_state *init_plasma_manager_state(const char *store_socket_name,
const char *manager_socket_name,
const char *manager_addr,
int manager_port,
const char *db_addr,
+1
View File
@@ -67,6 +67,7 @@ plasma_mock *init_plasma_mock(plasma_mock *remote_mock) {
CHECK(mock->manager_local_fd >= 0 && mock->local_store >= 0);
mock->state = init_plasma_manager_state(utstring_body(store_socket_name),
utstring_body(manager_socket_name),
manager_addr, mock->port, NULL, 0);
mock->loop = get_event_loop(mock->state);
/* Accept a connection from the local manager on the remote manager. */