MXS-1632: Take mxb::atomic::add into use

The function now mostly replaces the use of atomic_add_ functions declared
in atomic.h.
This commit is contained in:
Markus Mäkelä
2018-09-17 13:32:49 +03:00
parent 4d792c3410
commit 2e069fa892
20 changed files with 104 additions and 86 deletions

View File

@ -12,7 +12,7 @@
*/
#include "dcb.hh"
#include <maxbase/atomic.h>
#include <maxbase/atomic.hh>
#include <maxscale/service.h>
Dcb::Dcb(DCB* pDcb)
@ -49,7 +49,7 @@ void Dcb::deleter(DCB* dcb)
if (pSref)
{
atomic_add(&pSref->connections, -1);
mxb::atomic::add(&pSref->connections, -1);
}
dcb_close(dcb);
}

View File

@ -17,6 +17,7 @@
#include <limits>
#include <vector>
#include <maxbase/atomic.hh>
#include <maxscale/log.h>
#include "dcb.hh"
@ -203,7 +204,7 @@ Dcb HintRouter::connect_to_backend(MXS_SESSION* session,
if (new_connection)
{
HR_DEBUG("Connected.");
atomic_add(&sref->connections, 1);
mxb::atomic::add(&sref->connections, 1, mxb::atomic::RELAXED);
new_connection->service = session->service;
result = Dcb(new_connection);

View File

@ -81,7 +81,7 @@
#include <maxscale/alloc.h>
#include <maxscale/server.hh>
#include <maxscale/router.h>
#include <maxbase/atomic.h>
#include <maxbase/atomic.hh>
#include <maxscale/spinlock.h>
#include <maxscale/dcb.h>
#include <maxscale/modinfo.h>
@ -440,7 +440,7 @@ static MXS_ROUTER_SESSION* newSession(MXS_ROUTER* instance, MXS_SESSION* session
return NULL;
}
atomic_add(&candidate->connections, 1);
mxb::atomic::add(&candidate->connections, 1, mxb::atomic::RELAXED);
inst->stats.n_sessions++;
@ -473,7 +473,9 @@ static void freeSession(MXS_ROUTER* router_instance, MXS_ROUTER_SESSION* router_
ROUTER_INSTANCE* router = (ROUTER_INSTANCE*) router_instance;
ROUTER_CLIENT_SES* router_cli_ses = (ROUTER_CLIENT_SES*) router_client_ses;
MXB_AT_DEBUG(int prev_val = ) atomic_add(&router_cli_ses->backend->connections, -1);
MXB_AT_DEBUG(int prev_val = ) mxb::atomic::add(&router_cli_ses->backend->connections,
-1,
mxb::atomic::RELAXED);
mxb_assert(prev_val > 0);
MXS_FREE(router_cli_ses);
@ -612,7 +614,7 @@ static int routeQuery(MXS_ROUTER* instance, MXS_ROUTER_SESSION* router_session,
inst->stats.n_queries++;
// Due to the streaming nature of readconnroute, this is not accurate
atomic_add_uint64(&router_cli_ses->backend->server->stats.packets, 1);
mxb::atomic::add(&router_cli_ses->backend->server->stats.packets, 1, mxb::atomic::RELAXED);
/** Dirty read for quick check if router is closed. */
if (router_cli_ses->rses_closed)

View File

@ -131,7 +131,7 @@ bool RWSplitSession::handle_target_is_all(route_target_t route_target,
else if (route_session_write(gwbuf_clone(querybuf), packet_type, qtype))
{
result = true;
atomic_add_uint64(&m_router->stats().n_all, 1);
mxb::atomic::add(&m_router->stats().n_all, 1, mxb::atomic::RELAXED);
}
m_qc.set_large_query(is_large);

View File

@ -438,7 +438,7 @@ bool RWSplitSession::route_session_write(GWBUF* querybuf, uint8_t command, uint3
if (backend->execute_session_command())
{
nsucc += 1;
atomic_add_uint64(&backend->server()->stats.packets, 1);
mxb::atomic::add(&backend->server()->stats.packets, 1, mxb::atomic::RELAXED);
m_router->server_stats(backend->server()).total++;
m_router->server_stats(backend->server()).read++;
@ -805,7 +805,7 @@ SRWBackend RWSplitSession::handle_slave_is_target(uint8_t cmd, uint32_t stmt_id)
if (target)
{
atomic_add_uint64(&m_router->stats().n_slave, 1);
mxb::atomic::add(&m_router->stats().n_slave, 1, mxb::atomic::RELAXED);
m_router->server_stats(target->server()).read++;
mxb_assert(target->in_use() || target->can_connect());
}
@ -938,7 +938,7 @@ bool RWSplitSession::handle_master_is_target(SRWBackend* dest)
if (target && target == m_current_master)
{
atomic_add_uint64(&m_router->stats().n_master, 1);
mxb::atomic::add(&m_router->stats().n_master, 1, mxb::atomic::RELAXED);
m_router->server_stats(target->server()).write++;
}
else
@ -1092,8 +1092,8 @@ bool RWSplitSession::handle_got_target(GWBUF* querybuf, SRWBackend& target, bool
m_current_query.copy_from(querybuf);
}
atomic_add_uint64(&m_router->stats().n_queries, 1);
atomic_add_uint64(&target->server()->stats.packets, 1);
mxb::atomic::add(&m_router->stats().n_queries, 1, mxb::atomic::RELAXED);
mxb::atomic::add(&target->server()->stats.packets, 1, mxb::atomic::RELAXED);
m_router->server_stats(target->server()).total++;
if (!m_qc.large_query())

View File

@ -421,7 +421,7 @@ void RWSplitSession::trx_replay_next_stmt()
{
// No more statements to execute
m_is_replay_active = false;
atomic_add_uint64(&m_router->stats().n_trx_replay, 1);
mxb::atomic::add(&m_router->stats().n_trx_replay, 1, mxb::atomic::RELAXED);
if (!m_replayed_trx.empty())
{

View File

@ -289,10 +289,11 @@ private:
{
if (session_trx_is_ending(m_client->session))
{
atomic_add_uint64(m_qc.is_trx_still_read_only()
? &m_router->stats().n_ro_trx
: &m_router->stats().n_rw_trx,
1);
mxb::atomic::add(m_qc.is_trx_still_read_only()
? &m_router->stats().n_ro_trx
: &m_router->stats().n_rw_trx,
1,
mxb::atomic::RELAXED);
}
}
};

View File

@ -17,6 +17,7 @@
#include <inttypes.h>
#include <maxbase/atomic.hh>
#include <maxscale/alloc.h>
#include <maxscale/modutil.h>
#include <maxscale/poll.h>
@ -81,7 +82,7 @@ SchemaRouterSession::SchemaRouterSession(MXS_SESSION* session,
m_connect_db = db;
}
atomic_add(&m_router->m_stats.sessions, 1);
mxb::atomic::add(&m_router->m_stats.sessions, 1);
}
SchemaRouterSession::~SchemaRouterSession()
@ -415,8 +416,8 @@ int32_t SchemaRouterSession::routeQuery(GWBUF* pPacket)
/** Session commands, route to all servers */
if (route_session_write(pPacket, command))
{
atomic_add(&m_router->m_stats.n_sescmd, 1);
atomic_add(&m_router->m_stats.n_queries, 1);
mxb::atomic::add(&m_router->m_stats.n_sescmd, 1, mxb::atomic::RELAXED);
mxb::atomic::add(&m_router->m_stats.n_queries, 1, mxb::atomic::RELAXED);
ret = 1;
}
}
@ -453,16 +454,16 @@ int32_t SchemaRouterSession::routeQuery(GWBUF* pPacket)
{
if (handle_statement(pPacket, bref, command, type))
{
atomic_add(&m_router->m_stats.n_sescmd, 1);
atomic_add(&m_router->m_stats.n_queries, 1);
mxb::atomic::add(&m_router->m_stats.n_sescmd, 1, mxb::atomic::RELAXED);
mxb::atomic::add(&m_router->m_stats.n_queries, 1, mxb::atomic::RELAXED);
ret = 1;
}
}
else if (bref->write(pPacket))
{
/** Add one query response waiter to backend reference */
atomic_add(&m_router->m_stats.n_queries, 1);
atomic_add_uint64(&bref->server()->stats.packets, 1);
mxb::atomic::add(&m_router->m_stats.n_queries, 1, mxb::atomic::RELAXED);
mxb::atomic::add(&bref->server()->stats.packets, 1, mxb::atomic::RELAXED);
ret = 1;
}
else
@ -608,7 +609,7 @@ void SchemaRouterSession::clientReply(GWBUF* pPacket, DCB* pDcb)
}
else if (bref->write_stored_command())
{
atomic_add(&m_router->m_stats.n_queries, 1);
mxb::atomic::add(&m_router->m_stats.n_queries, 1, mxb::atomic::RELAXED);
}
}
@ -750,7 +751,7 @@ bool SchemaRouterSession::route_session_write(GWBUF* querybuf, uint8_t command)
bool succp = false;
MXS_INFO("Session write, routing to all servers.");
atomic_add(&m_stats.longest_sescmd, 1);
mxb::atomic::add(&m_stats.longest_sescmd, 1, mxb::atomic::RELAXED);
/** Increment the session command count */
++m_sent_sescmd;
@ -776,7 +777,7 @@ bool SchemaRouterSession::route_session_write(GWBUF* querybuf, uint8_t command)
if ((*it)->execute_session_command())
{
succp = true;
atomic_add_uint64(&(*it)->server()->stats.packets, 1);
mxb::atomic::add(&(*it)->server()->stats.packets, 1, mxb::atomic::RELAXED);
}
else
{
@ -1640,7 +1641,7 @@ bool SchemaRouterSession::handle_statement(GWBUF* querybuf, SSRBackend& bref, ui
{
bool succp = false;
atomic_add(&m_stats.longest_sescmd, 1);
mxb::atomic::add(&m_stats.longest_sescmd, 1, mxb::atomic::RELAXED);
/** Increment the session command count */
++m_sent_sescmd;
@ -1655,7 +1656,7 @@ bool SchemaRouterSession::handle_statement(GWBUF* querybuf, SSRBackend& bref, ui
if (bref->execute_session_command())
{
succp = true;
atomic_add_uint64(&bref->server()->stats.packets, 1);
mxb::atomic::add(&bref->server()->stats.packets, 1, mxb::atomic::RELAXED);
}
else
{