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 <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
 | 
			
		||||
             */
 | 
			
		||||
 | 
			
		||||
@ -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;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 | 
			
		||||
@ -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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
         */
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user