Re: [HACKERS] Frustration

Поиск
Список
Период
Сортировка
От Michael Simms
Тема Re: [HACKERS] Frustration
Дата
Msg-id 199909240154.CAA02239@argh.demon.co.uk
обсуждение исходный текст
Ответ на Re: [HACKERS] Frustration  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: [HACKERS] Frustration  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
> Good luck figuring out where the real problem is...
> 
>             regards, tom lane

Well, thanks to tom, I know what was wrong, and I have found the problem,
or one of them at least...

FATAL: s_lock(0c9ef824) at bufmgr.c:1106, stuck spinlock. Aborting.

Okee, that segment of code is, well, its some deep down internals that
are as clear as mud to me.

Anyone in the know have an idea what this does?

Just to save you looking, it is included below.

One question, is that does postgresql Inc have a 'normal person' support
level? I ask that cos I was planning on getting some of the commercial
support, and whilst it is a reasonable price to pay for corporations or
people with truckloads of money, I am a humble developer with more
expenses than income, and $600 is just way out of my league {:-(

If not, fair enough, just thought Id ask cos the support I have had from
this list is excellent and I wanted to provide some payback to the
developoment group.
            ~Michael

/** WaitIO -- Block until the IO_IN_PROGRESS flag on 'buf'*              is cleared.  Because IO_IN_PROGRESS conflicts
are*             expected to be rare, there is only one BufferIO*              lock in the entire system.      All
processesblock*              on this semaphore when they try to use a buffer*              that someone else is
faultingin.  Whenever a*              process finishes an IO and someone is waiting for*              the buffer,
BufferIOis signaled (SignalIO).  All*              waiting processes then wake up and check to see*              if
theirbuffer is now ready.  This implementation*              is simple, but efficient enough if WaitIO is*
rarelycalled by multiple processes simultaneously.**      ProcSleep atomically releases the spinlock and goes to*
      sleep.**      Note: there is an easy fix if the queue becomes long.*              save the id of the buffer we
arewaiting for in*              the queue structure.  That way signal can figure*              out which proc to wake
up.*/
#ifdef HAS_TEST_AND_SET
static void
WaitIO(BufferDesc *buf, SPINLOCK spinlock)
{       SpinRelease(spinlock);       S_LOCK(&(buf->io_in_progress_lock));       S_UNLOCK(&(buf->io_in_progress_lock));
    SpinAcquire(spinlock);
 
}


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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: [HACKERS] Frustration
Следующее
От: Adriaan Joubert
Дата:
Сообщение: Re: [HACKERS] Re: [GENERAL] Update of bitmask type