MXS-1446: Add heartbeat conversion macros

The macros make the conversion from heartbeats to seconds more convenient
and consistent.
This commit is contained in:
Markus Mäkelä
2017-09-27 11:15:22 +03:00
parent 667440fbef
commit 0d6c06f33d
5 changed files with 16 additions and 7 deletions

View File

@ -23,4 +23,14 @@ MXS_BEGIN_DECLS
extern int64_t hkheartbeat; extern int64_t hkheartbeat;
/**
* Convert heartbeats to seconds
*/
#define HB_TO_SEC(a) ((int64_t)a / 10)
/**
* Convert seconds to heartbeats
*/
#define SEC_TO_HB(a) ((int64_t)a * 10)
MXS_END_DECLS MXS_END_DECLS

View File

@ -3953,7 +3953,7 @@ json_t* config_maxscale_to_json(const char* host)
json_t* attr = json_object(); json_t* attr = json_object();
time_t started = maxscale_started(); time_t started = maxscale_started();
time_t activated = started + (cnf->promoted_at / 10); time_t activated = started + HB_TO_SEC(cnf->promoted_at);
json_object_set_new(attr, CN_PARAMETERS, param); json_object_set_new(attr, CN_PARAMETERS, param);
json_object_set_new(attr, "version", json_string(MAXSCALE_VERSION)); json_object_set_new(attr, "version", json_string(MAXSCALE_VERSION));
json_object_set_new(attr, "commit", json_string(MAXSCALE_COMMIT)); json_object_set_new(attr, "commit", json_string(MAXSCALE_COMMIT));

View File

@ -1784,8 +1784,7 @@ void mon_process_state_changes(MXS_MONITOR *monitor, const char *script, uint64_
ptr->new_event && // Event has not yet been processed ptr->new_event && // Event has not yet been processed
monitor->last_master_down > monitor->last_master_up) // Latest relevant event monitor->last_master_down > monitor->last_master_up) // Latest relevant event
{ {
// Scale the timeout to heartbeat resolution which is 1/10th of a second int64_t timeout = SEC_TO_HB(monitor->failover_timeout);
int64_t timeout = (int64_t)monitor->failover_timeout * 10;
int64_t t = hkheartbeat - ptr->server->triggered_at; int64_t t = hkheartbeat - ptr->server->triggered_at;
if (t > timeout) if (t > timeout)

View File

@ -505,7 +505,7 @@ dprintServer(DCB *dcb, const SERVER *server)
dcb_printf(dcb, "\tMaster Id: %ld\n", server->master_id); dcb_printf(dcb, "\tMaster Id: %ld\n", server->master_id);
dcb_printf(dcb, "\tLast event: %s\n", dcb_printf(dcb, "\tLast event: %s\n",
mon_get_event_name((mxs_monitor_event_t)server->last_event)); mon_get_event_name((mxs_monitor_event_t)server->last_event));
time_t t = maxscale_started() + (server->triggered_at / 10); time_t t = maxscale_started() + HB_TO_SEC(server->triggered_at);
dcb_printf(dcb, "\tTriggered at: %s\n", http_to_date(t).c_str()); dcb_printf(dcb, "\tTriggered at: %s\n", http_to_date(t).c_str());
if (server->slaves) if (server->slaves)
@ -1464,7 +1464,7 @@ static json_t* server_json_attributes(const SERVER* server)
json_object_set_new(attr, "replication_depth", json_integer(server->depth)); json_object_set_new(attr, "replication_depth", json_integer(server->depth));
const char* event_name = mon_get_event_name((mxs_monitor_event_t)server->last_event); const char* event_name = mon_get_event_name((mxs_monitor_event_t)server->last_event);
time_t t = maxscale_started() + (server->triggered_at / 10); time_t t = maxscale_started() + HB_TO_SEC(server->triggered_at);
json_object_set_new(attr, "last_event", json_string(event_name)); json_object_set_new(attr, "last_event", json_string(event_name));
json_object_set_new(attr, "triggered_at", json_string(http_to_date(t).c_str())); json_object_set_new(attr, "triggered_at", json_string(http_to_date(t).c_str()));

View File

@ -82,8 +82,8 @@ void handle_connection_keepalive(RWSplit *inst, RWSplitSession *rses,
if (diff > keepalive) if (diff > keepalive)
{ {
MXS_INFO("Pinging %s, idle for %d seconds", MXS_INFO("Pinging %s, idle for %ld seconds",
backend->name(), diff / 10); backend->name(), HB_TO_SEC(diff));
modutil_ignorable_ping(backend->dcb()); modutil_ignorable_ping(backend->dcb());
} }
} }