Dead code or buggy code?

Поиск
Список
Период
Сортировка
От Greg Stark
Тема Dead code or buggy code?
Дата
Msg-id CAM-w4HOySQ4p3MVBFS4C0=3+KQ1AJDJ-Oi-62=aNTFB7AJGXfg@mail.gmail.com
обсуждение исходный текст
Ответы Re: Dead code or buggy code?  (Robert Haas <robertmhaas@gmail.com>)
Список pgsql-hackers
The following code is in the ProcSleep at proc.c:1138.
GetBlockingAutoVacuumPgproc() should presumably always return a vacuum
pgproc entry since the deadlock state says it's blocked by autovacuum.
But I'm not really familiar enough with this codepath to know whether
there's not a race condition here where it can sometimes return null.
The following code checks autovac != NULL but the PGXACT initializer
would have seg faulted if it returned NULL if that's possible.
       if (deadlock_state == DS_BLOCKED_BY_AUTOVACUUM &&
allow_autovacuum_cancel)       {           PGPROC       *autovac = GetBlockingAutoVacuumPgproc();           PGXACT
*autovac_pgxact =
 
&ProcGlobal->allPgXact[autovac->pgprocno];
           LWLockAcquire(ProcArrayLock, LW_EXCLUSIVE);
           /*            * Only do it if the worker is not working to protect against Xid            * wraparound.
     */           if ((autovac != NULL) &&               (autovac_pgxact->vacuumFlags & PROC_IS_AUTOVACUUM) &&
    !(autovac_pgxact->vacuumFlags & PROC_VACUUM_FOR_WRAPAROUND))           {
 


-- 
greg



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

Предыдущее
От: Hannu Krosing
Дата:
Сообщение: Re: record identical operator
Следующее
От: Noah Misch
Дата:
Сообщение: Re: relscan_details.h