locking change help

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема locking change help
Дата
Msg-id 199801230621.BAA15426@candle.pha.pa.us
обсуждение исходный текст
Список pgsql-hackers
I am trying to change the lock manager so read locks will not be granted
if there is a write-lock waiting for a lock.  The following patch helps,
but is incomplete.  Can someone figure out the right fix?  I tried
putting this code inside LockResolveConflicts(), but that didn't work
either.

---------------------------------------------------------------------------

*** ./backend/storage/lmgr/lock.c.orig    Fri Jan 23 01:18:01 1998
--- ./backend/storage/lmgr/lock.c    Fri Jan 23 01:18:53 1998
***************
*** 602,607 ****
--- 602,620 ----

      status = LockResolveConflicts(ltable, lock, lockt, myXid);

+         /* ------------------------
+          * If someone with a greater priority is waiting for the lock,
+          * do not continue and share the lock, even if we can.  bjm
+          * ------------------------
+          */
+         int                myprio = ltable->ctl->prio[lockt];
+         PROC_QUEUE        *waitQueue = &(lock->waitProcs);
+         PROC            *topproc = (PROC *) MAKE_PTR(waitQueue->links.prev);
+
+         if (topproc && topproc->prio > myprio)
+             status = STATUS_FOUND;
+     }
+
      if (status == STATUS_OK)
      {
          GrantLock(lock, lockt);

--
Bruce Momjian
maillist@candle.pha.pa.us

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

Предыдущее
От: The Hermit Hacker
Дата:
Сообщение: Re: [HACKERS] Re: [PORTS] Important Announcement
Следующее
От: "Vadim B. Mikheev"
Дата:
Сообщение: Re: [HACKERS] LOCK command