? potential bug in LockBuffer ?

Поиск
Список
Период
Сортировка
От Mauricio Breternitz
Тема ? potential bug in LockBuffer ?
Дата
Msg-id F166XCj303wxNaJkGuS0000f852@hotmail.com
обсуждение исходный текст
Список pgsql-hackers
Folks: As I study the source of LockBuffer in bufmgr.c I came across
the following code snippet for the case of releasing a
shared (read) lock:

       if (mode == BUFFER_LOCK_UNLOCK)       {               if (*buflock & BL_R_LOCK)               {
    Assert(buf->r_locks > 0);                       Assert(!(buf->w_lock));                       Assert(!(*buflock &
(BL_W_LOCK| BL_RI_LOCK)));                       (buf->r_locks)--;                        *buflock &= ~BL_R_LOCK;
 

This code resets BL_R_LOCK on the first release of a shared lock.
I think it should check that the count of readers be zero:
( something like
       if (mode == BUFFER_LOCK_UNLOCK)       {               if (*buflock & BL_R_LOCK)               {
    Assert(buf->r_locks > 0);                       Assert(!(buf->w_lock));                       Assert(!(*buflock &
(BL_W_LOCK| BL_RI_LOCK)));                       (buf->r_locks)--;                       if (!buf->r_locks)
                 *buflock &= ~BL_R_LOCK;
 


Or I am missing something...
      thanks           regards                  Mauricio
_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com



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

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: Re: Not released yet, but could someone take a quick peak ...
Следующее
От: Peter Eisentraut
Дата:
Сообщение: Re: SEP_CHAR