MXS-2196: Rename session states
Minor renaming of the session state enum values. Also exposed the session state stringification function in the public header and removed the stringification macro.
This commit is contained in:
parent
7aaadfc550
commit
20fe9b9dca
@ -375,7 +375,7 @@ void RRRouter::handle_error(RRRouterSession* rses,
|
||||
case ERRACT_REPLY_CLIENT:
|
||||
{
|
||||
/* React to failed authentication, send message to client */
|
||||
if (sesstate == SESSION_STATE_ROUTER_READY)
|
||||
if (sesstate == SESSION_STATE_STARTED)
|
||||
{
|
||||
/* Send error report to client */
|
||||
GWBUF* copy = gwbuf_clone(message);
|
||||
|
@ -34,52 +34,14 @@ using SListener = std::shared_ptr<Listener>;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SESSION_STATE_ALLOC, /*< for all sessions */
|
||||
SESSION_STATE_READY, /*< for router session */
|
||||
SESSION_STATE_ROUTER_READY, /*< for router session */
|
||||
SESSION_STATE_CREATED, /*< Session created but not started */
|
||||
SESSION_STATE_STARTED, /*< Session is fully functional */
|
||||
SESSION_STATE_STOPPING, /*< session and router are being closed */
|
||||
SESSION_STATE_LISTENER, /*< for listener session */
|
||||
SESSION_STATE_LISTENER_STOPPED, /*< for listener session */
|
||||
SESSION_STATE_TO_BE_FREED, /*< ready to be freed as soon as there are no references */
|
||||
SESSION_STATE_FREE, /*< for all sessions */
|
||||
} mxs_session_state_t;
|
||||
|
||||
#define STRSESSIONSTATE(s) \
|
||||
((s) == SESSION_STATE_ALLOC ? "SESSION_STATE_ALLOC" \
|
||||
: ((s) == SESSION_STATE_READY ? "SESSION_STATE_READY" \
|
||||
: ((s) \
|
||||
== SESSION_STATE_ROUTER_READY \
|
||||
? "SESSION_STATE_ROUTER_READY" \
|
||||
: ((s) \
|
||||
== \
|
||||
SESSION_STATE_STOPPING \
|
||||
? \
|
||||
"SESSION_STATE_STOPPING" \
|
||||
: (( \
|
||||
s) \
|
||||
== \
|
||||
SESSION_STATE_LISTENER \
|
||||
? \
|
||||
"SESSION_STATE_LISTENER" \
|
||||
: (( \
|
||||
s) \
|
||||
== \
|
||||
SESSION_STATE_LISTENER_STOPPED \
|
||||
? \
|
||||
"SESSION_STATE_LISTENER_STOPPED" \
|
||||
: (( \
|
||||
s) \
|
||||
== \
|
||||
SESSION_STATE_TO_BE_FREED \
|
||||
? \
|
||||
"SESSION_STATE_TO_BE_FREED" \
|
||||
: (( \
|
||||
s) \
|
||||
== \
|
||||
SESSION_STATE_FREE \
|
||||
? \
|
||||
"SESSION_STATE_TO_BE_FREE" \
|
||||
: "SESSION_STATE_UNKNOWN"))))))))
|
||||
const char* session_state_to_string(mxs_session_state_t);
|
||||
|
||||
typedef enum
|
||||
{
|
||||
|
@ -33,11 +33,6 @@
|
||||
#define MXS_UPSTREAM_INIT {0}
|
||||
#define SESSION_FILTER_INIT {0}
|
||||
|
||||
#define SESSION_INIT \
|
||||
{.ses_chk_top = CHK_NUM_SESSION, \
|
||||
.stats = SESSION_STATS_INIT, .head = MXS_DOWNSTREAM_INIT, .tail = MXS_UPSTREAM_INIT, \
|
||||
.state = SESSION_STATE_ALLOC, .client_protocol_data = 0, .ses_chk_tail = CHK_NUM_SESSION}
|
||||
|
||||
#define SESSION_PROTOCOL(x, type) DCB_PROTOCOL((x)->client_dcb, type)
|
||||
|
||||
MXS_BEGIN_DECLS
|
||||
@ -52,7 +47,6 @@ typedef enum
|
||||
} SESSIONLISTFILTER;
|
||||
|
||||
int session_isvalid(MXS_SESSION*);
|
||||
const char* session_state(mxs_session_state_t);
|
||||
|
||||
/**
|
||||
* Link a session to a backend DCB.
|
||||
|
@ -87,7 +87,7 @@ static void session_deliver_response(MXS_SESSION* session);
|
||||
static int session_reply(MXS_FILTER* inst, MXS_FILTER_SESSION* session, GWBUF* data);
|
||||
|
||||
MXS_SESSION::MXS_SESSION(const SListener& listener)
|
||||
: state(SESSION_STATE_READY)
|
||||
: state(SESSION_STATE_CREATED)
|
||||
, ses_id(session_get_next_id())
|
||||
, client_dcb(nullptr)
|
||||
, listener(listener)
|
||||
@ -155,7 +155,7 @@ bool session_start(MXS_SESSION* session)
|
||||
return false;
|
||||
}
|
||||
|
||||
session->state = SESSION_STATE_ROUTER_READY;
|
||||
session->state = SESSION_STATE_STARTED;
|
||||
mxb::atomic::add(&session->service->stats.n_sessions, 1, mxb::atomic::RELAXED);
|
||||
mxb::atomic::add(&session->service->stats.n_current, 1, mxb::atomic::RELAXED);
|
||||
|
||||
@ -317,7 +317,7 @@ void printSession(MXS_SESSION* session)
|
||||
char timebuf[40];
|
||||
|
||||
printf("Session %p\n", session);
|
||||
printf("\tState: %s\n", session_state(session->state));
|
||||
printf("\tState: %s\n", session_state_to_string(session->state));
|
||||
printf("\tService: %s (%p)\n", session->service->name, session->service);
|
||||
printf("\tClient DCB: %p\n", session->client_dcb);
|
||||
printf("\tConnected: %s\n",
|
||||
@ -386,7 +386,7 @@ void dprintSession(DCB* dcb, MXS_SESSION* print_session)
|
||||
int i;
|
||||
|
||||
dcb_printf(dcb, "Session %" PRIu64 "\n", print_session->ses_id);
|
||||
dcb_printf(dcb, "\tState: %s\n", session_state(print_session->state));
|
||||
dcb_printf(dcb, "\tState: %s\n", session_state_to_string(print_session->state));
|
||||
dcb_printf(dcb, "\tService: %s\n", print_session->service->name);
|
||||
|
||||
if (print_session->client_dcb && print_session->client_dcb->remote)
|
||||
@ -429,7 +429,7 @@ bool dListSessions_cb(DCB* dcb, void* data)
|
||||
session->client_dcb->remote : "",
|
||||
session->service && session->service->name ?
|
||||
session->service->name : "",
|
||||
session_state(session->state));
|
||||
session_state_to_string(session->state));
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -459,24 +459,15 @@ void dListSessions(DCB* dcb)
|
||||
* @param state The session state
|
||||
* @return A string representation of the session state
|
||||
*/
|
||||
const char* session_state(mxs_session_state_t state)
|
||||
const char* session_state_to_string(mxs_session_state_t state)
|
||||
{
|
||||
switch (state)
|
||||
{
|
||||
case SESSION_STATE_ALLOC:
|
||||
return "Session Allocated";
|
||||
case SESSION_STATE_CREATED:
|
||||
return "Session created";
|
||||
|
||||
case SESSION_STATE_READY:
|
||||
return "Session Ready";
|
||||
|
||||
case SESSION_STATE_ROUTER_READY:
|
||||
return "Session ready for routing";
|
||||
|
||||
case SESSION_STATE_LISTENER:
|
||||
return "Listener Session";
|
||||
|
||||
case SESSION_STATE_LISTENER_STOPPED:
|
||||
return "Stopped Listener Session";
|
||||
case SESSION_STATE_STARTED:
|
||||
return "Session started";
|
||||
|
||||
case SESSION_STATE_STOPPING:
|
||||
return "Stopping session";
|
||||
@ -610,7 +601,7 @@ bool dcb_iter_cb(DCB* dcb, void* data)
|
||||
char buf[20];
|
||||
snprintf(buf, sizeof(buf), "%p", ses);
|
||||
|
||||
set->add_row({buf, ses->client_dcb->remote, ses->service->name, session_state(ses->state)});
|
||||
set->add_row({buf, ses->client_dcb->remote, ses->service->name, session_state_to_string(ses->state)});
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -761,7 +752,7 @@ json_t* session_json_data(const Session* session, const char* host)
|
||||
|
||||
/** Session attributes */
|
||||
json_t* attr = json_object();
|
||||
json_object_set_new(attr, "state", json_string(session_state(session->state)));
|
||||
json_object_set_new(attr, "state", json_string(session_state_to_string(session->state)));
|
||||
|
||||
if (session->client_dcb->user)
|
||||
{
|
||||
@ -999,7 +990,7 @@ public:
|
||||
|
||||
void execute()
|
||||
{
|
||||
if (m_session->state == SESSION_STATE_ROUTER_READY)
|
||||
if (m_session->state == SESSION_STATE_STARTED)
|
||||
{
|
||||
GWBUF* buffer = m_buffer;
|
||||
m_buffer = NULL;
|
||||
|
@ -28,7 +28,7 @@ Session::Session(Client* pClient, const SListener& listener)
|
||||
|
||||
memset((void*)pSession, 0, sizeof(MXS_SESSION));
|
||||
|
||||
pSession->state = SESSION_STATE_ALLOC;
|
||||
pSession->state = SESSION_STATE_CREATED;
|
||||
|
||||
pSession->client_dcb = &m_client_dcb;
|
||||
|
||||
|
@ -624,7 +624,7 @@ static inline bool session_ok_to_route(DCB* dcb)
|
||||
{
|
||||
bool rval = false;
|
||||
|
||||
if (dcb->session->state == SESSION_STATE_ROUTER_READY
|
||||
if (dcb->session->state == SESSION_STATE_STARTED
|
||||
&& dcb->session->client_dcb != NULL
|
||||
&& dcb->session->client_dcb->state == DCB_STATE_POLLING
|
||||
&& (dcb->session->router_session
|
||||
@ -1292,7 +1292,7 @@ static int gw_error_backend_event(DCB* dcb)
|
||||
}
|
||||
dcb_close(dcb);
|
||||
}
|
||||
else if (dcb->state != DCB_STATE_POLLING || session->state != SESSION_STATE_ROUTER_READY)
|
||||
else if (dcb->state != DCB_STATE_POLLING || session->state != SESSION_STATE_STARTED)
|
||||
{
|
||||
int error;
|
||||
int len = sizeof(error);
|
||||
@ -1336,7 +1336,7 @@ static int gw_backend_hangup(DCB* dcb)
|
||||
|
||||
if (!dcb->persistentstart)
|
||||
{
|
||||
if (session->state != SESSION_STATE_ROUTER_READY)
|
||||
if (session->state != SESSION_STATE_STARTED)
|
||||
{
|
||||
int error;
|
||||
int len = sizeof(error);
|
||||
|
@ -773,7 +773,7 @@ static int gw_read_do_authentication(DCB* dcb, GWBUF* read_buffer, int nbytes_re
|
||||
*/
|
||||
if (session_start(dcb->session))
|
||||
{
|
||||
mxb_assert(dcb->session->state != SESSION_STATE_ALLOC);
|
||||
mxb_assert(dcb->session->state != SESSION_STATE_CREATED);
|
||||
// For the time being only the sql_mode is stored in MXS_SESSION::client_protocol_data.
|
||||
dcb->session->client_protocol_data = QC_SQL_MODE_DEFAULT;
|
||||
protocol->protocol_auth_state = MXS_AUTH_STATE_COMPLETE;
|
||||
@ -1048,12 +1048,12 @@ static int gw_read_normal_data(DCB* dcb, GWBUF* read_buffer, int nbytes_read)
|
||||
|
||||
session = dcb->session;
|
||||
session_state_value = session->state;
|
||||
if (session_state_value != SESSION_STATE_ROUTER_READY)
|
||||
if (session_state_value != SESSION_STATE_STARTED)
|
||||
{
|
||||
if (session_state_value != SESSION_STATE_STOPPING)
|
||||
{
|
||||
MXS_ERROR("Session received a query in incorrect state %s",
|
||||
STRSESSIONSTATE(session_state_value));
|
||||
MXS_ERROR("Session received a query in incorrect state: %s",
|
||||
session_state_to_string(session_state_value));
|
||||
}
|
||||
gwbuf_free(read_buffer);
|
||||
dcb_close(dcb);
|
||||
@ -1462,7 +1462,7 @@ static int gw_client_close(DCB* dcb)
|
||||
{
|
||||
MXS_SESSION* target = dcb->session;
|
||||
|
||||
if (target->state == SESSION_STATE_ROUTER_READY || target->state == SESSION_STATE_STOPPING)
|
||||
if (target->state == SESSION_STATE_STARTED || target->state == SESSION_STATE_STOPPING)
|
||||
{
|
||||
MXB_AT_DEBUG(bool removed = ) mxs_rworker_deregister_session(target->ses_id);
|
||||
mxb_assert(removed);
|
||||
|
@ -595,15 +595,15 @@ bool gw_get_shared_session_auth_info(DCB* dcb, MYSQL_session* session)
|
||||
mxb_assert(dcb->data);
|
||||
memcpy(session, dcb->data, sizeof(MYSQL_session));
|
||||
}
|
||||
else if (dcb->session->state != SESSION_STATE_ALLOC)
|
||||
else if (dcb->session->state != SESSION_STATE_CREATED)
|
||||
{
|
||||
memcpy(session, dcb->session->client_dcb->data, sizeof(MYSQL_session));
|
||||
}
|
||||
else
|
||||
{
|
||||
mxb_assert(false);
|
||||
MXS_ERROR("Couldn't get session authentication info. Session in a wrong state %s.",
|
||||
STRSESSIONSTATE(dcb->session->state));
|
||||
MXS_ERROR("Couldn't get session authentication info. Session in wrong state: %s.",
|
||||
session_state_to_string(dcb->session->state));
|
||||
rval = false;
|
||||
}
|
||||
|
||||
@ -970,8 +970,8 @@ mxs_auth_state_t gw_send_backend_auth(DCB* dcb)
|
||||
mxs_auth_state_t rval = MXS_AUTH_STATE_FAILED;
|
||||
|
||||
if (dcb->session == NULL
|
||||
|| (dcb->session->state != SESSION_STATE_READY
|
||||
&& dcb->session->state != SESSION_STATE_ROUTER_READY)
|
||||
|| (dcb->session->state != SESSION_STATE_CREATED
|
||||
&& dcb->session->state != SESSION_STATE_STARTED)
|
||||
|| (dcb->server->server_ssl
|
||||
&& dcb->ssl_state == SSL_HANDSHAKE_FAILED))
|
||||
{
|
||||
|
@ -150,7 +150,7 @@ static MXS_ROUTER_SESSION* newSession(MXS_ROUTER* instance, MXS_SESSION* session
|
||||
inst->sessions = client;
|
||||
pthread_mutex_unlock(&inst->lock);
|
||||
|
||||
session->state = SESSION_STATE_READY;
|
||||
session->state = SESSION_STATE_CREATED;
|
||||
|
||||
return reinterpret_cast<MXS_ROUTER_SESSION*>(client);
|
||||
}
|
||||
|
@ -164,7 +164,7 @@ static MXS_ROUTER_SESSION* newSession(MXS_ROUTER* instance, MXS_SESSION* session
|
||||
inst->sessions = client;
|
||||
pthread_mutex_unlock(&inst->lock);
|
||||
|
||||
session->state = SESSION_STATE_READY;
|
||||
session->state = SESSION_STATE_CREATED;
|
||||
|
||||
dcb_printf(session->client_dcb, "Welcome to the MariaDB Corporation MaxScale Debug Interface.\n");
|
||||
dcb_printf(session->client_dcb, "Type help for a list of available commands.\n\n");
|
||||
|
@ -168,7 +168,7 @@ void HintRouterSession::handleError(GWBUF* pMessage,
|
||||
case ERRACT_REPLY_CLIENT:
|
||||
{
|
||||
/* React to failed authentication, send message to client */
|
||||
if (sesstate == SESSION_STATE_ROUTER_READY)
|
||||
if (sesstate == SESSION_STATE_STARTED)
|
||||
{
|
||||
/* Send error report to client */
|
||||
GWBUF* pCopy = gwbuf_clone(pMessage);
|
||||
|
@ -192,7 +192,7 @@ static MXS_ROUTER_SESSION* newSession(MXS_ROUTER* instance, MXS_SESSION* session
|
||||
inst->sessions = client;
|
||||
pthread_mutex_unlock(&inst->lock);
|
||||
|
||||
session->state = SESSION_STATE_READY;
|
||||
session->state = SESSION_STATE_CREATED;
|
||||
|
||||
return reinterpret_cast<MXS_ROUTER_SESSION*>(client);
|
||||
}
|
||||
@ -274,7 +274,7 @@ static void handleError(MXS_ROUTER* instance,
|
||||
|
||||
client_dcb = session->client_dcb;
|
||||
|
||||
if (session->state == SESSION_STATE_ROUTER_READY)
|
||||
if (session->state == SESSION_STATE_STARTED)
|
||||
{
|
||||
client_dcb->func.write(client_dcb, gwbuf_clone(errbuf));
|
||||
}
|
||||
|
@ -711,7 +711,7 @@ static void handleError(MXS_ROUTER* instance,
|
||||
|
||||
{
|
||||
mxb_assert(problem_dcb->role == DCB::Role::BACKEND);
|
||||
mxb_assert(problem_dcb->session->state == SESSION_STATE_ROUTER_READY);
|
||||
mxb_assert(problem_dcb->session->state == SESSION_STATE_STARTED);
|
||||
DCB* client_dcb = problem_dcb->session->client_dcb;
|
||||
client_dcb->func.write(client_dcb, gwbuf_clone(errbuf));
|
||||
|
||||
|
@ -1123,7 +1123,7 @@ void RWSplitSession::handle_error_reply_client(DCB* backend_dcb, GWBUF* errmsg)
|
||||
|
||||
backend->close();
|
||||
|
||||
if (sesstate == SESSION_STATE_ROUTER_READY)
|
||||
if (sesstate == SESSION_STATE_STARTED)
|
||||
{
|
||||
m_client->func.write(m_client, gwbuf_clone(errmsg));
|
||||
}
|
||||
|
@ -638,7 +638,7 @@ void SchemaRouterSession::handleError(GWBUF* pMessage,
|
||||
|
||||
case ERRACT_REPLY_CLIENT:
|
||||
// The session pointer can be NULL if the creation fails when filters are being set up
|
||||
if (m_client->session && m_client->session->state == SESSION_STATE_ROUTER_READY)
|
||||
if (m_client->session && m_client->session->state == SESSION_STATE_STARTED)
|
||||
{
|
||||
m_client->func.write(m_client, gwbuf_clone(pMessage));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user