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 по дате отправления: