Re: Lock on ShmemVariableCache fields?

Поиск
Список
Период
Сортировка
От Zhang Mingli
Тема Re: Lock on ShmemVariableCache fields?
Дата
Msg-id 2f0598a2-4fa3-4f94-8fe5-8a481a0f8732@Spark
обсуждение исходный текст
Ответ на Lock on ShmemVariableCache fields?  (Japin Li <japinli@hotmail.com>)
Ответы Re: Lock on ShmemVariableCache fields?  (Japin Li <japinli@hotmail.com>)
Список pgsql-hackers
HI,

On Oct 31, 2022, 10:48 +0800, Japin Li <japinli@hotmail.com>, wrote:

Hi, hackers

The VariableCacheData says nextOid and oidCount are protected by
OidGenLock. However, we update them without holding the lock on
OidGenLock in BootStrapXLOG(). Same as nextXid, for other fields
that are protected by XidGenLock, it holds the lock, see
SetTransactionIdLimit().

void
BootStrapXLOG(void)
{
[...]

ShmemVariableCache->nextXid = checkPoint.nextXid;
ShmemVariableCache->nextOid = checkPoint.nextOid;
ShmemVariableCache->oidCount = 0;

[...]

SetTransactionIdLimit(checkPoint.oldestXid, checkPoint.oldestXidDB);

[...]
}

I also find a similar code in StartupXLOG(). Why we don't hold the lock
on OidGenLock when updating ShmemVariableCache->nextOid and
ShmemVariableCache->oidCount?

If the lock is unnecessary, I think adding some comments is better.

--
Regrads,
Japin Li.
ChengDu WenWu Information Technology Co.,Ltd.


As its name BootStrapXLOG, it’s used in BootStrap mode to initialize the template database.
The process doesn’t speak SQL and the database is not ready.
There won’t be  concurrent access to variables.

Regards,
Zhang Mingli

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

Предыдущее
От: Bharath Rupireddy
Дата:
Сообщение: Re: Adding doubly linked list type which stores the number of items in the list
Следующее
От: Bharath Rupireddy
Дата:
Сообщение: Re: Use pg_pwritev_with_retry() instead of write() in dir_open_for_write() to avoid partial writes?