Merge branch '2.3' into develop
This commit is contained in:
@ -78,6 +78,7 @@ static void discard_if_response_differs(RWBackend* backend,
|
||||
STRPACKETTYPE(cmd),
|
||||
query.empty() ? "<no query>" : query.c_str());
|
||||
backend->close(mxs::Backend::CLOSE_FATAL);
|
||||
backend->set_close_reason("Invalid response to: " + query);
|
||||
}
|
||||
}
|
||||
|
||||
@ -160,5 +161,32 @@ void RWSplitSession::process_sescmd_response(RWBackend* backend, GWBUF** ppPacke
|
||||
gwbuf_free(*ppPacket);
|
||||
*ppPacket = NULL;
|
||||
}
|
||||
|
||||
if (m_expected_responses == 0
|
||||
&& (command == MXS_COM_CHANGE_USER || command == MXS_COM_RESET_CONNECTION))
|
||||
{
|
||||
mxb_assert_message(m_slave_responses.empty(), "All responses should've been processed");
|
||||
// This is the last session command to finish that resets the session state, reset the history
|
||||
MXS_INFO("Resetting session command history (length: %lu)", m_sescmd_list.size());
|
||||
|
||||
/**
|
||||
* Since new connections need to perform the COM_CHANGE_USER, pop it off the list along
|
||||
* with the expected response to it.
|
||||
*/
|
||||
SSessionCommand latest = m_sescmd_list.back();
|
||||
cmd = m_sescmd_responses[latest->get_position()];
|
||||
|
||||
m_sescmd_list.clear();
|
||||
m_sescmd_responses.clear();
|
||||
|
||||
// Push the response back as the first executed session command
|
||||
m_sescmd_list.push_back(latest);
|
||||
m_sescmd_responses[latest->get_position()] = cmd;
|
||||
|
||||
// Adjust counters to match the number of stored session commands
|
||||
m_recv_sescmd = 1;
|
||||
m_sent_sescmd = 1;
|
||||
m_sescmd_count = 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user