Remove excessively tight conditions for selecting persistent connections, add more information to debug output when connection is rejected.

This commit is contained in:
counterpoint
2015-09-18 11:03:23 +01:00
parent e507933c48
commit b8af047a25
2 changed files with 8 additions and 7 deletions

View File

@ -1888,8 +1888,6 @@ dcb_maybe_add_persistent(DCB *dcb)
int poolcount = -1; int poolcount = -1;
if (dcb->user != NULL if (dcb->user != NULL
&& strlen(dcb->user) && strlen(dcb->user)
&& dcb->session->state != SESSION_STATE_STOPPING
&& dcb->session->state != SESSION_STATE_TO_BE_FREED
&& dcb->server && dcb->server
&& dcb->server->persistpoolmax && dcb->server->persistpoolmax
&& (dcb->server->status & SERVER_RUNNING) && (dcb->server->status & SERVER_RUNNING)
@ -1916,14 +1914,16 @@ dcb_maybe_add_persistent(DCB *dcb)
{ {
LOGIF(LD, (skygw_log_write( LOGIF(LD, (skygw_log_write(
LOGFILE_DEBUG, LOGFILE_DEBUG,
"%lu [dcb_maybe_add_persistent] Not adding DCB %p to persistent pool, user %s, " "%lu [dcb_maybe_add_persistent] Not adding DCB %p to persistent pool, "
"max for pool %d, error handle called %s, hung flag %s, pool count %d.\n", "user %s, max for pool %d, error handle called %s, hung flag %s, "
"server status %d, pool count %d.\n",
pthread_self(), pthread_self(),
dcb, dcb,
dcb->user ? dcb->user : "", dcb->user ? dcb->user : "",
(dcb->server && dcb->server->persistpoolmax) ? dcb->server->persistpoolmax : 0, (dcb->server && dcb->server->persistpoolmax) ? dcb->server->persistpoolmax : 0,
dcb->dcb_errhandle_called ? "true" : "false", dcb->dcb_errhandle_called ? "true" : "false",
(dcb->flags & DCBF_HUNG) ? "true" : "false", (dcb->flags & DCBF_HUNG) ? "true" : "false",
dcb->server ? dcb->server->status : 0,
poolcount))); poolcount)));
} }
return false; return false;
@ -2828,8 +2828,6 @@ dcb_persistent_clean_count(DCB *dcb, bool cleanall)
|| persistentdcb-> dcb_errhandle_called || persistentdcb-> dcb_errhandle_called
|| count >= server->persistpoolmax || count >= server->persistpoolmax
|| persistentdcb->server == NULL || persistentdcb->server == NULL
|| persistentdcb->session->state == SESSION_STATE_STOPPING
|| persistentdcb->session->state == SESSION_STATE_TO_BE_FREED
|| !(persistentdcb->server->status & SERVER_RUNNING) || !(persistentdcb->server->status & SERVER_RUNNING)
|| (time(NULL) - persistentdcb->persistentstart) > server->persistmaxtime) || (time(NULL) - persistentdcb->persistentstart) > server->persistmaxtime)
{ {

View File

@ -153,7 +153,10 @@ server_get_persistent(SERVER *server, char *user, const char *protocol)
{ {
DCB *dcb, *previous = NULL; DCB *dcb, *previous = NULL;
if (server->persistent && dcb_persistent_clean_count(server->persistent, false) && server->persistent) if (server->persistent
&& dcb_persistent_clean_count(server->persistent, false)
&& server->persistent
&& (server->status & SERVER_RUNNING))
{ {
spinlock_acquire(&server->persistlock); spinlock_acquire(&server->persistlock);
dcb = server->persistent; dcb = server->persistent;