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 "readwritesplit.h"
#include <inttypes.h>
#include <stdio.h> #include <stdio.h>
#include <strings.h> #include <strings.h>
#include <string.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; 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); router->stats.n_sessions);
dcb_printf(dcb, "\tCurrent no. of router sessions: %d\n", dcb_printf(dcb, "\tCurrent no. of router sessions: %d\n",
router->service->stats.n_current); 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); 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); 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); 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); router->stats.n_all, all_pct);
if ((weightby = serviceGetWeightingParameter(router->service)) != NULL) if ((weightby = serviceGetWeightingParameter(router->service)) != NULL)
@ -782,7 +783,7 @@ static void clientReply(MXS_ROUTER *instance,
gwbuf_clone(bref->bref_pending_cmd))) == 1) gwbuf_clone(bref->bref_pending_cmd))) == 1)
{ {
ROUTER_INSTANCE* inst = (ROUTER_INSTANCE *)instance; 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 * Add one query response waiter to backend reference
*/ */

View File

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

View File

@ -282,7 +282,7 @@ handle_target_is_all(route_target_t route_target,
if (result) if (result)
{ {
atomic_add(&inst->stats.n_all, 1); atomic_add_uint64(&inst->stats.n_all, 1);
} }
return result; 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)) 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; return true;
} }
else else
@ -1157,14 +1157,14 @@ bool handle_master_is_target(ROUTER_INSTANCE *inst, ROUTER_CLIENT_SES *rses,
if (succp && master_dcb == curr_master_dcb) 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; *target_dcb = master_dcb;
} }
else else
{ {
if (succp && master_dcb == curr_master_dcb) 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; *target_dcb = master_dcb;
} }
else else
@ -1253,7 +1253,7 @@ handle_got_target(ROUTER_INSTANCE *inst, ROUTER_CLIENT_SES *rses,
backend_ref_t *bref; 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 * Add one query response waiter to backend reference
*/ */