Re: Stuck spins in current

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "Mikheev, Vadim" <vmikheev(at)SECTORBASE(dot)COM>
Cc: "'pgsql-hackers(at)postgresql(dot)org'" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Stuck spins in current
Date: 2001-03-16 23:25:07
Message-ID: 29094.984785107@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

"Mikheev, Vadim" <vmikheev(at)SECTORBASE(dot)COM> writes:
>> Alternatively, could we avoid holding that lock while initializing a
>> new log segment?

> How to synchronize with checkpoint-er if wal_files > 0?

I was sort of visualizing assigning the created xlog files dynamically:

create a temp file of a PID-dependent name
fill it with zeroes and fsync it
acquire ControlFileLockId
rename temp file into place as next uncreated segment
update pg_control
release ControlFileLockId

Since the things are just filled with 0's, there's no need to know which
segment it will be while you're filling it.

This would leave you sometimes with more advance files than you really
needed, but so what ...

> And you know - I've run same tests on ~ Mar 9 snapshot
> without any problems.

That was before I changed the code to pre-fill the file --- now it takes
longer to init a log segment. And we're only using a plain SpinAcquire,
not the flavor with a longer timeout.

regards, tom lane

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Mikheev, Vadim 2001-03-16 23:34:10 RE: Stuck spins in current
Previous Message Mikheev, Vadim 2001-03-16 23:16:30 RE: Stuck spins in current