Use 64-bit integers for statistics in rwsplit
Wraparound is not likely anymore.
This commit is contained in:
@ -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
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user