Remove excessively tight conditions for selecting persistent connections, add more information to debug output when connection is rejected.
This commit is contained in:
@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user