Extend master failure error message
The error now describes the failure mode in more detail. This should make post mortem analysis of failed connections a lot easier.
This commit is contained in:
@ -877,6 +877,7 @@ void RWSplitSession::handleError(GWBUF* errmsgbuf,
|
|||||||
{
|
{
|
||||||
case ERRACT_NEW_CONNECTION:
|
case ERRACT_NEW_CONNECTION:
|
||||||
{
|
{
|
||||||
|
std::string errmsg;
|
||||||
bool can_continue = false;
|
bool can_continue = false;
|
||||||
|
|
||||||
if (m_current_master && m_current_master->in_use() && m_current_master == backend)
|
if (m_current_master && m_current_master->in_use() && m_current_master == backend)
|
||||||
@ -896,6 +897,7 @@ void RWSplitSession::handleError(GWBUF* errmsgbuf,
|
|||||||
* can't be sure whether it was executed or not. In this
|
* can't be sure whether it was executed or not. In this
|
||||||
* case the safest thing to do is to close the client
|
* case the safest thing to do is to close the client
|
||||||
* connection. */
|
* connection. */
|
||||||
|
errmsg += " Lost connection to master server while connection was idle.";
|
||||||
if (m_config.master_failure_mode != RW_FAIL_INSTANTLY)
|
if (m_config.master_failure_mode != RW_FAIL_INSTANTLY)
|
||||||
{
|
{
|
||||||
can_continue = true;
|
can_continue = true;
|
||||||
@ -906,6 +908,7 @@ void RWSplitSession::handleError(GWBUF* errmsgbuf,
|
|||||||
// We were expecting a response but we aren't going to get one
|
// We were expecting a response but we aren't going to get one
|
||||||
mxb_assert(m_expected_responses > 0);
|
mxb_assert(m_expected_responses > 0);
|
||||||
m_expected_responses--;
|
m_expected_responses--;
|
||||||
|
errmsg += " Lost connection to master server while waiting for a result.";
|
||||||
|
|
||||||
if (can_retry_query())
|
if (can_retry_query())
|
||||||
{
|
{
|
||||||
@ -925,6 +928,7 @@ void RWSplitSession::handleError(GWBUF* errmsgbuf,
|
|||||||
if (session_trx_is_active(session) && m_otrx_state == OTRX_INACTIVE)
|
if (session_trx_is_active(session) && m_otrx_state == OTRX_INACTIVE)
|
||||||
{
|
{
|
||||||
can_continue = start_trx_replay();
|
can_continue = start_trx_replay();
|
||||||
|
errmsg += " A transaction is active and cannot be replayed.";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!can_continue)
|
if (!can_continue)
|
||||||
@ -939,7 +943,7 @@ void RWSplitSession::handleError(GWBUF* errmsgbuf,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MXS_ERROR("Lost connection to the master server, closing session.");
|
MXS_ERROR("Lost connection to the master server, closing session.%s", errmsg.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user