When volatile key was changed (cmap set or reload) and checks fails, nothing was logged. Values are now checked and error string is logged on problems. Also totem_config is dumped to log (DEBUG level) after every volatile key change and every reload. Signed-off-by: Jan Friesse <jfriesse@xxxxxxxxxx> --- exec/totemconfig.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 56 insertions(+), 1 deletions(-) diff --git a/exec/totemconfig.c b/exec/totemconfig.c index e520987..228f162 100644 --- a/exec/totemconfig.c +++ b/exec/totemconfig.c @@ -1134,6 +1134,42 @@ key_error: } +static void debug_dump_totem_config(const struct totem_config *totem_config) +{ + + log_printf(LOGSYS_LEVEL_DEBUG, "Token Timeout (%d ms) retransmit timeout (%d ms)", + totem_config->token_timeout, totem_config->token_retransmit_timeout); + log_printf(LOGSYS_LEVEL_DEBUG, "token hold (%d ms) retransmits before loss (%d retrans)", + totem_config->token_hold_timeout, totem_config->token_retransmits_before_loss_const); + log_printf(LOGSYS_LEVEL_DEBUG, "join (%d ms) send_join (%d ms) consensus (%d ms) merge (%d ms)", + totem_config->join_timeout, totem_config->send_join_timeout, totem_config->consensus_timeout, + totem_config->merge_timeout); + log_printf(LOGSYS_LEVEL_DEBUG, "downcheck (%d ms) fail to recv const (%d msgs)", + totem_config->downcheck_timeout, totem_config->fail_to_recv_const); + log_printf(LOGSYS_LEVEL_DEBUG, + "seqno unchanged const (%d rotations) Maximum network MTU %d", + totem_config->seqno_unchanged_const, totem_config->net_mtu); + log_printf(LOGSYS_LEVEL_DEBUG, + "window size per rotation (%d messages) maximum messages per rotation (%d messages)", + totem_config->window_size, totem_config->max_messages); + log_printf(LOGSYS_LEVEL_DEBUG, "missed count const (%d messages)", totem_config->miss_count_const); + log_printf(LOGSYS_LEVEL_DEBUG, "RRP token expired timeout (%d ms)", + totem_config->rrp_token_expired_timeout); + log_printf(LOGSYS_LEVEL_DEBUG, "RRP token problem counter (%d ms)", + totem_config->rrp_problem_count_timeout); + log_printf(LOGSYS_LEVEL_DEBUG, "RRP threshold (%d problem count)", + totem_config->rrp_problem_count_threshold); + log_printf(LOGSYS_LEVEL_DEBUG, "RRP multicast threshold (%d problem count)", + totem_config->rrp_problem_count_mcast_threshold); + log_printf(LOGSYS_LEVEL_DEBUG, "RRP automatic recovery check timeout (%d ms)", + totem_config->rrp_autorecovery_check_timeout); + log_printf(LOGSYS_LEVEL_DEBUG, "RRP mode set to %s.", + totem_config->rrp_mode); + log_printf(LOGSYS_LEVEL_DEBUG, "heartbeat_failures_allowed (%d)", + totem_config->heartbeat_failures_allowed); + log_printf(LOGSYS_LEVEL_DEBUG, "max_network_delay (%d ms)", totem_config->max_network_delay); +} + static void totem_change_notify( int32_t event, const char *key_name, @@ -1141,9 +1177,11 @@ static void totem_change_notify( struct icmap_notify_value old_val, void *user_data) { + struct totem_config *totem_config = (struct totem_config *)user_data; uint32_t *param; uint8_t reloading; const char *deleted_key; + const char *error_string; /* * If a full reload is in progress then don't do anything until it's done and @@ -1171,7 +1209,15 @@ static void totem_change_notify( break; } - totem_volatile_config_read ((struct totem_config *)user_data, deleted_key); + totem_volatile_config_read (totem_config, deleted_key); + debug_dump_totem_config(totem_config); + if (totem_volatile_config_validate(totem_config, &error_string) == -1) { + log_printf (LOGSYS_LEVEL_ERROR, "%s", error_string); + /* + * TODO: Consider corosync exit and/or load defaults for volatile + * values. For now, log error seems to be enough + */ + } } static void totem_reload_notify( @@ -1183,11 +1229,20 @@ static void totem_reload_notify( { struct totem_config *totem_config = (struct totem_config *)user_data; uint32_t local_node_pos; + const char *error_string; /* Reload has completed */ if (*(uint8_t *)new_val.data == 0) { put_nodelist_members_to_config (totem_config); totem_volatile_config_read (totem_config, NULL); + debug_dump_totem_config(totem_config); + if (totem_volatile_config_validate(totem_config, &error_string) == -1) { + log_printf (LOGSYS_LEVEL_ERROR, "%s", error_string); + /* + * TODO: Consider corosync exit and/or load defaults for volatile + * values. For now, log error seems to be enough + */ + } /* Reinstate the local_node_pos */ local_node_pos = find_local_node_in_nodelist(totem_config); -- 1.7.1 _______________________________________________ discuss mailing list discuss@xxxxxxxxxxxx http://lists.corosync.org/mailman/listinfo/discuss