Message ID | 20191213163644.19595-1-numans@ovn.org |
---|---|
State | Superseded |
Headers | show |
Series | [ovs-dev,v2] ovsdb replication: Provide option to configure probe interval. | expand |
On Fri, Dec 13, 2019 at 11:37 AM <numans@ovn.org> wrote: > > From: Numan Siddique <numans@ovn.org> > > When ovsdb-server is in backup mode and connects to the active > ovsdb-server for replication, and if takes more than 5 seconds to > get the dump of the whole database, it will drop the connection > soon after as the default probe interval is 5 seconds. This > results in a snowball effect of reconnections to the active > ovsdb-server. > > This patch handles or mitigates this issue by setting the > default probe interval value to 60 seconds and provide the option to > configure this value from the unixctl command. > > Other option could be increase the value of 'RECONNECT_DEFAULT_PROBE_INTERVAL' > to a higher value. Numan, sorry, I missed this the first time around. Could you also please document the new command in ovsdb-server.in.1? Thanks, Dumitru > > Acked-by: Mark Michelson <mmichels@redhat.com> > Signed-off-by: Numan Siddique <numans@ovn.org> > --- > ovsdb/ovsdb-server.c | 46 +++++++++++++++++++++++++++++++++++++------- > ovsdb/replication.c | 4 +++- > ovsdb/replication.h | 4 +++- > 3 files changed, 45 insertions(+), 9 deletions(-) > > diff --git a/ovsdb/ovsdb-server.c b/ovsdb/ovsdb-server.c > index 9827320ec..4ffe24ad7 100644 > --- a/ovsdb/ovsdb-server.c > +++ b/ovsdb/ovsdb-server.c > @@ -86,6 +86,7 @@ static unixctl_cb_func ovsdb_server_set_active_ovsdb_server; > static unixctl_cb_func ovsdb_server_get_active_ovsdb_server; > static unixctl_cb_func ovsdb_server_connect_active_ovsdb_server; > static unixctl_cb_func ovsdb_server_disconnect_active_ovsdb_server; > +static unixctl_cb_func ovsdb_server_set_active_ovsdb_server_probe_interval; > static unixctl_cb_func ovsdb_server_set_sync_exclude_tables; > static unixctl_cb_func ovsdb_server_get_sync_exclude_tables; > static unixctl_cb_func ovsdb_server_get_sync_status; > @@ -97,6 +98,7 @@ struct server_config { > char **sync_from; > char **sync_exclude; > bool *is_backup; > + int *replication_probe_interval; > struct ovsdb_jsonrpc_server *jsonrpc; > }; > static unixctl_cb_func ovsdb_server_add_remote; > @@ -144,9 +146,10 @@ static void load_config(FILE *config_file, struct sset *remotes, > > static void > ovsdb_replication_init(const char *sync_from, const char *exclude, > - struct shash *all_dbs, const struct uuid *server_uuid) > + struct shash *all_dbs, const struct uuid *server_uuid, > + int probe_interval) > { > - replication_init(sync_from, exclude, server_uuid); > + replication_init(sync_from, exclude, server_uuid, probe_interval); > struct shash_node *node; > SHASH_FOR_EACH (node, all_dbs) { > struct db *db = node->data; > @@ -304,6 +307,7 @@ main(int argc, char *argv[]) > struct server_config server_config; > struct shash all_dbs; > struct shash_node *node, *next; > + int replication_probe_interval = REPLICATION_DEFAULT_PROBE_INTERVAL; > > ovs_cmdl_proctitle_init(argc, argv); > set_program_name(argv[0]); > @@ -351,6 +355,7 @@ main(int argc, char *argv[]) > server_config.sync_from = &sync_from; > server_config.sync_exclude = &sync_exclude; > server_config.is_backup = &is_backup; > + server_config.replication_probe_interval = &replication_probe_interval; > > perf_counters_init(); > > @@ -436,6 +441,9 @@ main(int argc, char *argv[]) > unixctl_command_register("ovsdb-server/disconnect-active-ovsdb-server", "", > 0, 0, ovsdb_server_disconnect_active_ovsdb_server, > &server_config); > + unixctl_command_register( > + "ovsdb-server/set-active-ovsdb-server-probe-interval", "", 1, 1, > + ovsdb_server_set_active_ovsdb_server_probe_interval, &server_config); > unixctl_command_register("ovsdb-server/set-sync-exclude-tables", "", > 0, 1, ovsdb_server_set_sync_exclude_tables, > &server_config); > @@ -454,7 +462,8 @@ main(int argc, char *argv[]) > if (is_backup) { > const struct uuid *server_uuid; > server_uuid = ovsdb_jsonrpc_server_get_uuid(jsonrpc); > - ovsdb_replication_init(sync_from, sync_exclude, &all_dbs, server_uuid); > + ovsdb_replication_init(sync_from, sync_exclude, &all_dbs, server_uuid, > + replication_probe_interval); > } > > main_loop(&server_config, jsonrpc, &all_dbs, unixctl, &remotes, > @@ -1317,7 +1326,8 @@ ovsdb_server_connect_active_ovsdb_server(struct unixctl_conn *conn, > const struct uuid *server_uuid; > server_uuid = ovsdb_jsonrpc_server_get_uuid(config->jsonrpc); > ovsdb_replication_init(*config->sync_from, *config->sync_exclude, > - config->all_dbs, server_uuid); > + config->all_dbs, server_uuid, > + *config->replication_probe_interval); > if (!*config->is_backup) { > *config->is_backup = true; > save_config(config); > @@ -1340,6 +1350,25 @@ ovsdb_server_disconnect_active_ovsdb_server(struct unixctl_conn *conn, > unixctl_command_reply(conn, NULL); > } > > +static void > +ovsdb_server_set_active_ovsdb_server_probe_interval(struct unixctl_conn *conn, > + int argc OVS_UNUSED, > + const char *argv[], > + void *config_) > +{ > + struct server_config *config = config_; > + > + int probe_interval; > + if (str_to_int(argv[1], 10, &probe_interval)) { > + *config->replication_probe_interval = probe_interval; > + save_config(config); > + unixctl_command_reply(conn, NULL); > + } else { > + unixctl_command_reply( > + conn, "Invalid probe interval, integer value expected"); > + } > +} > + > static void > ovsdb_server_set_sync_exclude_tables(struct unixctl_conn *conn, > int argc OVS_UNUSED, > @@ -1357,7 +1386,8 @@ ovsdb_server_set_sync_exclude_tables(struct unixctl_conn *conn, > const struct uuid *server_uuid; > server_uuid = ovsdb_jsonrpc_server_get_uuid(config->jsonrpc); > ovsdb_replication_init(*config->sync_from, *config->sync_exclude, > - config->all_dbs, server_uuid); > + config->all_dbs, server_uuid, > + *config->replication_probe_interval); > } > err = set_blacklist_tables(argv[1], false); > } > @@ -1568,7 +1598,8 @@ ovsdb_server_add_database(struct unixctl_conn *conn, int argc OVS_UNUSED, > const struct uuid *server_uuid; > server_uuid = ovsdb_jsonrpc_server_get_uuid(config->jsonrpc); > ovsdb_replication_init(*config->sync_from, *config->sync_exclude, > - config->all_dbs, server_uuid); > + config->all_dbs, server_uuid, > + *config->replication_probe_interval); > } > unixctl_command_reply(conn, NULL); > } else { > @@ -1590,7 +1621,8 @@ remove_db(struct server_config *config, struct shash_node *node, char *comment) > const struct uuid *server_uuid; > server_uuid = ovsdb_jsonrpc_server_get_uuid(config->jsonrpc); > ovsdb_replication_init(*config->sync_from, *config->sync_exclude, > - config->all_dbs, server_uuid); > + config->all_dbs, server_uuid, > + *config->replication_probe_interval); > } > } > > diff --git a/ovsdb/replication.c b/ovsdb/replication.c > index 42e27cba0..d5aee77c4 100644 > --- a/ovsdb/replication.c > +++ b/ovsdb/replication.c > @@ -125,7 +125,7 @@ static struct replication_db *find_db(const char *db_name); > > void > replication_init(const char *sync_from_, const char *exclude_tables, > - const struct uuid *server) > + const struct uuid *server, int probe_interval) > { > free(sync_from); > sync_from = xstrdup(sync_from_); > @@ -143,6 +143,8 @@ replication_init(const char *sync_from_, const char *exclude_tables, > session = jsonrpc_session_open(sync_from, true); > session_seqno = UINT_MAX; > > + jsonrpc_session_set_probe_interval(session, probe_interval); > + > /* Keep a copy of local server uuid. */ > server_uuid = *server; > > diff --git a/ovsdb/replication.h b/ovsdb/replication.h > index 1f9c32fa7..c74805014 100644 > --- a/ovsdb/replication.h > +++ b/ovsdb/replication.h > @@ -44,8 +44,10 @@ struct ovsdb; > * used mainly by uinxctl commands. > */ > > +#define REPLICATION_DEFAULT_PROBE_INTERVAL 60000 > + > void replication_init(const char *sync_from, const char *exclude_tables, > - const struct uuid *server); > + const struct uuid *server, int probe_interval); > void replication_run(void); > void replication_wait(void); > void replication_destroy(void); > -- > 2.21.0 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > https://mail.openvswitch.org/mailman/listinfo/ovs-dev >
On Fri, Dec 13, 2019 at 2:23 PM Dumitru Ceara <dceara@redhat.com> wrote: > > On Fri, Dec 13, 2019 at 11:37 AM <numans@ovn.org> wrote: > > > > From: Numan Siddique <numans@ovn.org> > > > > When ovsdb-server is in backup mode and connects to the active > > ovsdb-server for replication, and if takes more than 5 seconds to > > get the dump of the whole database, it will drop the connection > > soon after as the default probe interval is 5 seconds. This > > results in a snowball effect of reconnections to the active > > ovsdb-server. > > > > This patch handles or mitigates this issue by setting the > > default probe interval value to 60 seconds and provide the option to > > configure this value from the unixctl command. > > > > Other option could be increase the value of 'RECONNECT_DEFAULT_PROBE_INTERVAL' > > to a higher value. > > Numan, sorry, I missed this the first time around. Could you also > please document the new command in ovsdb-server.in.1? > Thanks Dumitru. My bad for missing this. I submitted v3 addressing this. Thanks Numan > Thanks, > Dumitru > > > > > Acked-by: Mark Michelson <mmichels@redhat.com> > > Signed-off-by: Numan Siddique <numans@ovn.org> > > --- > > ovsdb/ovsdb-server.c | 46 +++++++++++++++++++++++++++++++++++++------- > > ovsdb/replication.c | 4 +++- > > ovsdb/replication.h | 4 +++- > > 3 files changed, 45 insertions(+), 9 deletions(-) > > > > diff --git a/ovsdb/ovsdb-server.c b/ovsdb/ovsdb-server.c > > index 9827320ec..4ffe24ad7 100644 > > --- a/ovsdb/ovsdb-server.c > > +++ b/ovsdb/ovsdb-server.c > > @@ -86,6 +86,7 @@ static unixctl_cb_func ovsdb_server_set_active_ovsdb_server; > > static unixctl_cb_func ovsdb_server_get_active_ovsdb_server; > > static unixctl_cb_func ovsdb_server_connect_active_ovsdb_server; > > static unixctl_cb_func ovsdb_server_disconnect_active_ovsdb_server; > > +static unixctl_cb_func ovsdb_server_set_active_ovsdb_server_probe_interval; > > static unixctl_cb_func ovsdb_server_set_sync_exclude_tables; > > static unixctl_cb_func ovsdb_server_get_sync_exclude_tables; > > static unixctl_cb_func ovsdb_server_get_sync_status; > > @@ -97,6 +98,7 @@ struct server_config { > > char **sync_from; > > char **sync_exclude; > > bool *is_backup; > > + int *replication_probe_interval; > > struct ovsdb_jsonrpc_server *jsonrpc; > > }; > > static unixctl_cb_func ovsdb_server_add_remote; > > @@ -144,9 +146,10 @@ static void load_config(FILE *config_file, struct sset *remotes, > > > > static void > > ovsdb_replication_init(const char *sync_from, const char *exclude, > > - struct shash *all_dbs, const struct uuid *server_uuid) > > + struct shash *all_dbs, const struct uuid *server_uuid, > > + int probe_interval) > > { > > - replication_init(sync_from, exclude, server_uuid); > > + replication_init(sync_from, exclude, server_uuid, probe_interval); > > struct shash_node *node; > > SHASH_FOR_EACH (node, all_dbs) { > > struct db *db = node->data; > > @@ -304,6 +307,7 @@ main(int argc, char *argv[]) > > struct server_config server_config; > > struct shash all_dbs; > > struct shash_node *node, *next; > > + int replication_probe_interval = REPLICATION_DEFAULT_PROBE_INTERVAL; > > > > ovs_cmdl_proctitle_init(argc, argv); > > set_program_name(argv[0]); > > @@ -351,6 +355,7 @@ main(int argc, char *argv[]) > > server_config.sync_from = &sync_from; > > server_config.sync_exclude = &sync_exclude; > > server_config.is_backup = &is_backup; > > + server_config.replication_probe_interval = &replication_probe_interval; > > > > perf_counters_init(); > > > > @@ -436,6 +441,9 @@ main(int argc, char *argv[]) > > unixctl_command_register("ovsdb-server/disconnect-active-ovsdb-server", "", > > 0, 0, ovsdb_server_disconnect_active_ovsdb_server, > > &server_config); > > + unixctl_command_register( > > + "ovsdb-server/set-active-ovsdb-server-probe-interval", "", 1, 1, > > + ovsdb_server_set_active_ovsdb_server_probe_interval, &server_config); > > unixctl_command_register("ovsdb-server/set-sync-exclude-tables", "", > > 0, 1, ovsdb_server_set_sync_exclude_tables, > > &server_config); > > @@ -454,7 +462,8 @@ main(int argc, char *argv[]) > > if (is_backup) { > > const struct uuid *server_uuid; > > server_uuid = ovsdb_jsonrpc_server_get_uuid(jsonrpc); > > - ovsdb_replication_init(sync_from, sync_exclude, &all_dbs, server_uuid); > > + ovsdb_replication_init(sync_from, sync_exclude, &all_dbs, server_uuid, > > + replication_probe_interval); > > } > > > > main_loop(&server_config, jsonrpc, &all_dbs, unixctl, &remotes, > > @@ -1317,7 +1326,8 @@ ovsdb_server_connect_active_ovsdb_server(struct unixctl_conn *conn, > > const struct uuid *server_uuid; > > server_uuid = ovsdb_jsonrpc_server_get_uuid(config->jsonrpc); > > ovsdb_replication_init(*config->sync_from, *config->sync_exclude, > > - config->all_dbs, server_uuid); > > + config->all_dbs, server_uuid, > > + *config->replication_probe_interval); > > if (!*config->is_backup) { > > *config->is_backup = true; > > save_config(config); > > @@ -1340,6 +1350,25 @@ ovsdb_server_disconnect_active_ovsdb_server(struct unixctl_conn *conn, > > unixctl_command_reply(conn, NULL); > > } > > > > +static void > > +ovsdb_server_set_active_ovsdb_server_probe_interval(struct unixctl_conn *conn, > > + int argc OVS_UNUSED, > > + const char *argv[], > > + void *config_) > > +{ > > + struct server_config *config = config_; > > + > > + int probe_interval; > > + if (str_to_int(argv[1], 10, &probe_interval)) { > > + *config->replication_probe_interval = probe_interval; > > + save_config(config); > > + unixctl_command_reply(conn, NULL); > > + } else { > > + unixctl_command_reply( > > + conn, "Invalid probe interval, integer value expected"); > > + } > > +} > > + > > static void > > ovsdb_server_set_sync_exclude_tables(struct unixctl_conn *conn, > > int argc OVS_UNUSED, > > @@ -1357,7 +1386,8 @@ ovsdb_server_set_sync_exclude_tables(struct unixctl_conn *conn, > > const struct uuid *server_uuid; > > server_uuid = ovsdb_jsonrpc_server_get_uuid(config->jsonrpc); > > ovsdb_replication_init(*config->sync_from, *config->sync_exclude, > > - config->all_dbs, server_uuid); > > + config->all_dbs, server_uuid, > > + *config->replication_probe_interval); > > } > > err = set_blacklist_tables(argv[1], false); > > } > > @@ -1568,7 +1598,8 @@ ovsdb_server_add_database(struct unixctl_conn *conn, int argc OVS_UNUSED, > > const struct uuid *server_uuid; > > server_uuid = ovsdb_jsonrpc_server_get_uuid(config->jsonrpc); > > ovsdb_replication_init(*config->sync_from, *config->sync_exclude, > > - config->all_dbs, server_uuid); > > + config->all_dbs, server_uuid, > > + *config->replication_probe_interval); > > } > > unixctl_command_reply(conn, NULL); > > } else { > > @@ -1590,7 +1621,8 @@ remove_db(struct server_config *config, struct shash_node *node, char *comment) > > const struct uuid *server_uuid; > > server_uuid = ovsdb_jsonrpc_server_get_uuid(config->jsonrpc); > > ovsdb_replication_init(*config->sync_from, *config->sync_exclude, > > - config->all_dbs, server_uuid); > > + config->all_dbs, server_uuid, > > + *config->replication_probe_interval); > > } > > } > > > > diff --git a/ovsdb/replication.c b/ovsdb/replication.c > > index 42e27cba0..d5aee77c4 100644 > > --- a/ovsdb/replication.c > > +++ b/ovsdb/replication.c > > @@ -125,7 +125,7 @@ static struct replication_db *find_db(const char *db_name); > > > > void > > replication_init(const char *sync_from_, const char *exclude_tables, > > - const struct uuid *server) > > + const struct uuid *server, int probe_interval) > > { > > free(sync_from); > > sync_from = xstrdup(sync_from_); > > @@ -143,6 +143,8 @@ replication_init(const char *sync_from_, const char *exclude_tables, > > session = jsonrpc_session_open(sync_from, true); > > session_seqno = UINT_MAX; > > > > + jsonrpc_session_set_probe_interval(session, probe_interval); > > + > > /* Keep a copy of local server uuid. */ > > server_uuid = *server; > > > > diff --git a/ovsdb/replication.h b/ovsdb/replication.h > > index 1f9c32fa7..c74805014 100644 > > --- a/ovsdb/replication.h > > +++ b/ovsdb/replication.h > > @@ -44,8 +44,10 @@ struct ovsdb; > > * used mainly by uinxctl commands. > > */ > > > > +#define REPLICATION_DEFAULT_PROBE_INTERVAL 60000 > > + > > void replication_init(const char *sync_from, const char *exclude_tables, > > - const struct uuid *server); > > + const struct uuid *server, int probe_interval); > > void replication_run(void); > > void replication_wait(void); > > void replication_destroy(void); > > -- > > 2.21.0 > > > > _______________________________________________ > > dev mailing list > > dev@openvswitch.org > > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > > > > _______________________________________________ > dev mailing list > dev@openvswitch.org > https://mail.openvswitch.org/mailman/listinfo/ovs-dev >
diff --git a/ovsdb/ovsdb-server.c b/ovsdb/ovsdb-server.c index 9827320ec..4ffe24ad7 100644 --- a/ovsdb/ovsdb-server.c +++ b/ovsdb/ovsdb-server.c @@ -86,6 +86,7 @@ static unixctl_cb_func ovsdb_server_set_active_ovsdb_server; static unixctl_cb_func ovsdb_server_get_active_ovsdb_server; static unixctl_cb_func ovsdb_server_connect_active_ovsdb_server; static unixctl_cb_func ovsdb_server_disconnect_active_ovsdb_server; +static unixctl_cb_func ovsdb_server_set_active_ovsdb_server_probe_interval; static unixctl_cb_func ovsdb_server_set_sync_exclude_tables; static unixctl_cb_func ovsdb_server_get_sync_exclude_tables; static unixctl_cb_func ovsdb_server_get_sync_status; @@ -97,6 +98,7 @@ struct server_config { char **sync_from; char **sync_exclude; bool *is_backup; + int *replication_probe_interval; struct ovsdb_jsonrpc_server *jsonrpc; }; static unixctl_cb_func ovsdb_server_add_remote; @@ -144,9 +146,10 @@ static void load_config(FILE *config_file, struct sset *remotes, static void ovsdb_replication_init(const char *sync_from, const char *exclude, - struct shash *all_dbs, const struct uuid *server_uuid) + struct shash *all_dbs, const struct uuid *server_uuid, + int probe_interval) { - replication_init(sync_from, exclude, server_uuid); + replication_init(sync_from, exclude, server_uuid, probe_interval); struct shash_node *node; SHASH_FOR_EACH (node, all_dbs) { struct db *db = node->data; @@ -304,6 +307,7 @@ main(int argc, char *argv[]) struct server_config server_config; struct shash all_dbs; struct shash_node *node, *next; + int replication_probe_interval = REPLICATION_DEFAULT_PROBE_INTERVAL; ovs_cmdl_proctitle_init(argc, argv); set_program_name(argv[0]); @@ -351,6 +355,7 @@ main(int argc, char *argv[]) server_config.sync_from = &sync_from; server_config.sync_exclude = &sync_exclude; server_config.is_backup = &is_backup; + server_config.replication_probe_interval = &replication_probe_interval; perf_counters_init(); @@ -436,6 +441,9 @@ main(int argc, char *argv[]) unixctl_command_register("ovsdb-server/disconnect-active-ovsdb-server", "", 0, 0, ovsdb_server_disconnect_active_ovsdb_server, &server_config); + unixctl_command_register( + "ovsdb-server/set-active-ovsdb-server-probe-interval", "", 1, 1, + ovsdb_server_set_active_ovsdb_server_probe_interval, &server_config); unixctl_command_register("ovsdb-server/set-sync-exclude-tables", "", 0, 1, ovsdb_server_set_sync_exclude_tables, &server_config); @@ -454,7 +462,8 @@ main(int argc, char *argv[]) if (is_backup) { const struct uuid *server_uuid; server_uuid = ovsdb_jsonrpc_server_get_uuid(jsonrpc); - ovsdb_replication_init(sync_from, sync_exclude, &all_dbs, server_uuid); + ovsdb_replication_init(sync_from, sync_exclude, &all_dbs, server_uuid, + replication_probe_interval); } main_loop(&server_config, jsonrpc, &all_dbs, unixctl, &remotes, @@ -1317,7 +1326,8 @@ ovsdb_server_connect_active_ovsdb_server(struct unixctl_conn *conn, const struct uuid *server_uuid; server_uuid = ovsdb_jsonrpc_server_get_uuid(config->jsonrpc); ovsdb_replication_init(*config->sync_from, *config->sync_exclude, - config->all_dbs, server_uuid); + config->all_dbs, server_uuid, + *config->replication_probe_interval); if (!*config->is_backup) { *config->is_backup = true; save_config(config); @@ -1340,6 +1350,25 @@ ovsdb_server_disconnect_active_ovsdb_server(struct unixctl_conn *conn, unixctl_command_reply(conn, NULL); } +static void +ovsdb_server_set_active_ovsdb_server_probe_interval(struct unixctl_conn *conn, + int argc OVS_UNUSED, + const char *argv[], + void *config_) +{ + struct server_config *config = config_; + + int probe_interval; + if (str_to_int(argv[1], 10, &probe_interval)) { + *config->replication_probe_interval = probe_interval; + save_config(config); + unixctl_command_reply(conn, NULL); + } else { + unixctl_command_reply( + conn, "Invalid probe interval, integer value expected"); + } +} + static void ovsdb_server_set_sync_exclude_tables(struct unixctl_conn *conn, int argc OVS_UNUSED, @@ -1357,7 +1386,8 @@ ovsdb_server_set_sync_exclude_tables(struct unixctl_conn *conn, const struct uuid *server_uuid; server_uuid = ovsdb_jsonrpc_server_get_uuid(config->jsonrpc); ovsdb_replication_init(*config->sync_from, *config->sync_exclude, - config->all_dbs, server_uuid); + config->all_dbs, server_uuid, + *config->replication_probe_interval); } err = set_blacklist_tables(argv[1], false); } @@ -1568,7 +1598,8 @@ ovsdb_server_add_database(struct unixctl_conn *conn, int argc OVS_UNUSED, const struct uuid *server_uuid; server_uuid = ovsdb_jsonrpc_server_get_uuid(config->jsonrpc); ovsdb_replication_init(*config->sync_from, *config->sync_exclude, - config->all_dbs, server_uuid); + config->all_dbs, server_uuid, + *config->replication_probe_interval); } unixctl_command_reply(conn, NULL); } else { @@ -1590,7 +1621,8 @@ remove_db(struct server_config *config, struct shash_node *node, char *comment) const struct uuid *server_uuid; server_uuid = ovsdb_jsonrpc_server_get_uuid(config->jsonrpc); ovsdb_replication_init(*config->sync_from, *config->sync_exclude, - config->all_dbs, server_uuid); + config->all_dbs, server_uuid, + *config->replication_probe_interval); } } diff --git a/ovsdb/replication.c b/ovsdb/replication.c index 42e27cba0..d5aee77c4 100644 --- a/ovsdb/replication.c +++ b/ovsdb/replication.c @@ -125,7 +125,7 @@ static struct replication_db *find_db(const char *db_name); void replication_init(const char *sync_from_, const char *exclude_tables, - const struct uuid *server) + const struct uuid *server, int probe_interval) { free(sync_from); sync_from = xstrdup(sync_from_); @@ -143,6 +143,8 @@ replication_init(const char *sync_from_, const char *exclude_tables, session = jsonrpc_session_open(sync_from, true); session_seqno = UINT_MAX; + jsonrpc_session_set_probe_interval(session, probe_interval); + /* Keep a copy of local server uuid. */ server_uuid = *server; diff --git a/ovsdb/replication.h b/ovsdb/replication.h index 1f9c32fa7..c74805014 100644 --- a/ovsdb/replication.h +++ b/ovsdb/replication.h @@ -44,8 +44,10 @@ struct ovsdb; * used mainly by uinxctl commands. */ +#define REPLICATION_DEFAULT_PROBE_INTERVAL 60000 + void replication_init(const char *sync_from, const char *exclude_tables, - const struct uuid *server); + const struct uuid *server, int probe_interval); void replication_run(void); void replication_wait(void); void replication_destroy(void);