Re: Idle processes chewing up CPU?

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Idle processes chewing up CPU?
Дата
Msg-id 25386.1253474675@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Idle processes chewing up CPU?  ("Brendan Hill" <brendanh@jims.net>)
Ответы Re: Idle processes chewing up CPU?  ("Brendan Hill" <brendanh@jims.net>)
Список pgsql-general
"Brendan Hill" <brendanh@jims.net> writes:
> My best interpretation is that an SSL client dirty disconnected while
> running a request. This caused an infinite loop in pq_recvbuf(), calling
> secure_read(), triggering my_sock_read() over and over. Calling
> SSL_get_error() in secure_read() returns 10045 (either connection reset, or
> WSAEOPNOTSUPP, I'm not sure) - after this, pq_recvbuf() appears to think
> errno=EINTR has occurred, so it immediately tries again.

I wonder if this would be a good idea:

  #ifdef USE_SSL
      if (port->ssl)
      {
          int            err;

  rloop:
+        errno = 0;
          n = SSL_read(port->ssl, ptr, len);
          err = SSL_get_error(port->ssl, n);
          switch (err)
          {
              case SSL_ERROR_NONE:
                  port->count += n;
                  break;

It looks to me like the basic issue is that pq_recvbuf is expecting
a relevant value of errno when secure_read returns -1, and there's
some path in the Windows case where errno doesn't get set, and if
it just happens to have been EINTR then we've got a loop.

            regards, tom lane

В списке pgsql-general по дате отправления:

Предыдущее
От: "Brendan Hill"
Дата:
Сообщение: Re: Idle processes chewing up CPU?
Следующее
От: Devrim GÜNDÜZ
Дата:
Сообщение: Re: MD5 sum mismatch in source rpm