Use 64-bit integers for statistics in rwsplit

Wraparound is not likely anymore.
This commit is contained in:
Johan Wikman 2017-03-30 12:44:27 +03:00
parent a1d1413b24
commit 726610b67d
4 changed files with 17 additions and 16 deletions

View File

@ -13,6 +13,7 @@
#include "readwritesplit.h"
#include <inttypes.h>
#include <stdio.h>
#include <strings.h>
#include <string.h>
@ -620,17 +621,17 @@ static void diagnostics(MXS_ROUTER *instance, DCB *dcb)
all_pct = ((double)router->stats.n_all / (double)router->stats.n_queries) * 100.0;
}
dcb_printf(dcb, "\tNumber of router sessions: %d\n",
dcb_printf(dcb, "\tNumber of router sessions: %" PRIu64 "\n",
router->stats.n_sessions);
dcb_printf(dcb, "\tCurrent no. of router sessions: %d\n",
router->service->stats.n_current);
dcb_printf(dcb, "\tNumber of queries forwarded: %d\n",
dcb_printf(dcb, "\tNumber of queries forwarded: %" PRIu64 "\n",
router->stats.n_queries);
dcb_printf(dcb, "\tNumber of queries forwarded to master: %d (%.2f%%)\n",
dcb_printf(dcb, "\tNumber of queries forwarded to master: %" PRIu64 " (%.2f%%)\n",
router->stats.n_master, master_pct);
dcb_printf(dcb, "\tNumber of queries forwarded to slave: %d (%.2f%%)\n",
dcb_printf(dcb, "\tNumber of queries forwarded to slave: %" PRIu64 " (%.2f%%)\n",
router->stats.n_slave, slave_pct);
dcb_printf(dcb, "\tNumber of queries forwarded to all: %d (%.2f%%)\n",
dcb_printf(dcb, "\tNumber of queries forwarded to all: %" PRIu64 " (%.2f%%)\n",
router->stats.n_all, all_pct);
if ((weightby = serviceGetWeightingParameter(router->service)) != NULL)
@ -782,7 +783,7 @@ static void clientReply(MXS_ROUTER *instance,
gwbuf_clone(bref->bref_pending_cmd))) == 1)
{
ROUTER_INSTANCE* inst = (ROUTER_INSTANCE *)instance;
atomic_add(&inst->stats.n_queries, 1);
atomic_add_uint64(&inst->stats.n_queries, 1);
/**
* Add one query response waiter to backend reference
*/

View File

@ -335,11 +335,11 @@ struct router_client_session
*/
typedef struct
{
int n_sessions; /*< Number sessions created */
int n_queries; /*< Number of queries forwarded */
int n_master; /*< Number of stmts sent to master */
int n_slave; /*< Number of stmts sent to slave */
int n_all; /*< Number of stmts sent to all */
uint64_t n_sessions; /*< Number sessions created */
uint64_t n_queries; /*< Number of queries forwarded */
uint64_t n_master; /*< Number of stmts sent to master */
uint64_t n_slave; /*< Number of stmts sent to slave */
uint64_t n_all; /*< Number of stmts sent to all */
} ROUTER_STATS;
/**

View File

@ -282,7 +282,7 @@ handle_target_is_all(route_target_t route_target,
if (result)
{
atomic_add(&inst->stats.n_all, 1);
atomic_add_uint64(&inst->stats.n_all, 1);
}
return result;
}

View File

@ -1069,7 +1069,7 @@ bool handle_slave_is_target(ROUTER_INSTANCE *inst, ROUTER_CLIENT_SES *rses,
*/
if (rwsplit_get_dcb(target_dcb, rses, BE_SLAVE, NULL, rlag_max))
{
atomic_add(&inst->stats.n_slave, 1);
atomic_add_uint64(&inst->stats.n_slave, 1);
return true;
}
else
@ -1157,14 +1157,14 @@ bool handle_master_is_target(ROUTER_INSTANCE *inst, ROUTER_CLIENT_SES *rses,
if (succp && master_dcb == curr_master_dcb)
{
atomic_add(&inst->stats.n_master, 1);
atomic_add_uint64(&inst->stats.n_master, 1);
*target_dcb = master_dcb;
}
else
{
if (succp && master_dcb == curr_master_dcb)
{
atomic_add(&inst->stats.n_master, 1);
atomic_add_uint64(&inst->stats.n_master, 1);
*target_dcb = master_dcb;
}
else
@ -1253,7 +1253,7 @@ handle_got_target(ROUTER_INSTANCE *inst, ROUTER_CLIENT_SES *rses,
backend_ref_t *bref;
atomic_add(&inst->stats.n_queries, 1);
atomic_add_uint64(&inst->stats.n_queries, 1);
/**
* Add one query response waiter to backend reference
*/