Move capture of user name for persistent connections; expand error message in mysql client to give more information.

This commit is contained in:
counterpoint
2015-09-01 09:59:34 +01:00
parent a711b25fec
commit d74990833b
2 changed files with 16 additions and 8 deletions

View File

@ -1845,6 +1845,16 @@ dcb_close(DCB *dcb)
spinlock_acquire(&zombiespin);
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
*/
@ -1870,10 +1880,8 @@ static bool
dcb_maybe_add_persistent(DCB *dcb)
{
int poolcount = -1;
char *user;
user = session_getUser(dcb->session);
if (user != NULL
&& strlen(user)
if (dcb->user != NULL
&& strlen(dcb->user)
&& dcb->server
&& dcb->server->persistpoolmax
&& !dcb->dcb_errhandle_called
@ -1887,8 +1895,6 @@ dcb_maybe_add_persistent(DCB *dcb)
dcb->user)));
dcb->dcb_is_zombie = false;
dcb->persistentstart = time(NULL);
if (dcb->user) free(dcb->user);
dcb->user = strdup(user);
spinlock_acquire(&dcb->server->persistlock);
dcb->nextpersistent = dcb->server->persistent;
dcb->server->persistent = dcb;

View File

@ -1860,7 +1860,9 @@ gw_client_hangup_event(DCB *dcb)
#if defined(SS_DEBUG)
LOGIF(LE, (skygw_log_write_flush(
LOGFILE_ERROR,
"Client hangup error handling.")));
"Client hangup error handling, session state %s, dcb state %s.",
session_state(session->state),
STRDCBSTATE(dcb->state))));
#endif
dcb_close(dcb);