MXS-1780 Collect server response information
As the router is the only one that knows what backends a particular statement has been sent to, it is the responsibility of the router to keep the session bookkeeping up to date. If it doesn't we will know what statements a session has received (provided at least some component in the routing chain has RCAP_TYPE_STMT_INPUT capability), but not how long their processing took. Currently only readwritesplit does that. All queries are stored and not just COM_QUERY as that makes the overall bookkeeping simpler; at clientReply() time we do not need to know whether or not to bookkeep information, we can just do it. When session information is queried for, we report as much information we have available.
This commit is contained in:
@ -585,6 +585,9 @@ void RWSplitSession::clientReply(GWBUF* writebuf, DCB* backend_dcb)
|
||||
{
|
||||
/** Got a complete reply, decrement expected response count */
|
||||
m_expected_responses--;
|
||||
|
||||
session_book_server_response(m_pSession, backend->backend()->server, m_expected_responses == 0);
|
||||
|
||||
mxb_assert(m_expected_responses >= 0);
|
||||
mxb_assert(backend->get_reply_state() == REPLY_STATE_DONE);
|
||||
MXS_INFO("Reply complete, last reply from %s", backend->name());
|
||||
@ -639,6 +642,7 @@ void RWSplitSession::clientReply(GWBUF* writebuf, DCB* backend_dcb)
|
||||
m_otrx_state = OTRX_INACTIVE;
|
||||
start_trx_replay();
|
||||
gwbuf_free(writebuf);
|
||||
session_reset_server_bookkeeping(m_pSession);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user