Move capture of user name for persistent connections; expand error message in mysql client to give more information.
This commit is contained in:
@ -1845,6 +1845,16 @@ dcb_close(DCB *dcb)
|
|||||||
spinlock_acquire(&zombiespin);
|
spinlock_acquire(&zombiespin);
|
||||||
if (!dcb->dcb_is_zombie)
|
if (!dcb->dcb_is_zombie)
|
||||||
{
|
{
|
||||||
|
if (dcb->server && DCB_STATE_POLLING == dcb->state)
|
||||||
|
{
|
||||||
|
/* May be a candidate for persistence, so save user name */
|
||||||
|
char *user;
|
||||||
|
user = session_getUser(dcb->session);
|
||||||
|
if (user && strlen(user) && !dcb->user)
|
||||||
|
{
|
||||||
|
dcb->user = strdup(user);
|
||||||
|
}
|
||||||
|
}
|
||||||
/*<
|
/*<
|
||||||
* Add closing dcb to the top of the list, setting zombie marker
|
* Add closing dcb to the top of the list, setting zombie marker
|
||||||
*/
|
*/
|
||||||
@ -1870,10 +1880,8 @@ static bool
|
|||||||
dcb_maybe_add_persistent(DCB *dcb)
|
dcb_maybe_add_persistent(DCB *dcb)
|
||||||
{
|
{
|
||||||
int poolcount = -1;
|
int poolcount = -1;
|
||||||
char *user;
|
if (dcb->user != NULL
|
||||||
user = session_getUser(dcb->session);
|
&& strlen(dcb->user)
|
||||||
if (user != NULL
|
|
||||||
&& strlen(user)
|
|
||||||
&& dcb->server
|
&& dcb->server
|
||||||
&& dcb->server->persistpoolmax
|
&& dcb->server->persistpoolmax
|
||||||
&& !dcb->dcb_errhandle_called
|
&& !dcb->dcb_errhandle_called
|
||||||
@ -1887,8 +1895,6 @@ dcb_maybe_add_persistent(DCB *dcb)
|
|||||||
dcb->user)));
|
dcb->user)));
|
||||||
dcb->dcb_is_zombie = false;
|
dcb->dcb_is_zombie = false;
|
||||||
dcb->persistentstart = time(NULL);
|
dcb->persistentstart = time(NULL);
|
||||||
if (dcb->user) free(dcb->user);
|
|
||||||
dcb->user = strdup(user);
|
|
||||||
spinlock_acquire(&dcb->server->persistlock);
|
spinlock_acquire(&dcb->server->persistlock);
|
||||||
dcb->nextpersistent = dcb->server->persistent;
|
dcb->nextpersistent = dcb->server->persistent;
|
||||||
dcb->server->persistent = dcb;
|
dcb->server->persistent = dcb;
|
||||||
|
@ -1860,7 +1860,9 @@ gw_client_hangup_event(DCB *dcb)
|
|||||||
#if defined(SS_DEBUG)
|
#if defined(SS_DEBUG)
|
||||||
LOGIF(LE, (skygw_log_write_flush(
|
LOGIF(LE, (skygw_log_write_flush(
|
||||||
LOGFILE_ERROR,
|
LOGFILE_ERROR,
|
||||||
"Client hangup error handling.")));
|
"Client hangup error handling, session state %s, dcb state %s.",
|
||||||
|
session_state(session->state),
|
||||||
|
STRDCBSTATE(dcb->state))));
|
||||||
#endif
|
#endif
|
||||||
dcb_close(dcb);
|
dcb_close(dcb);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user