>>> So what's holding the file open now? It's evidently not the bgwriter.
>
>> one of the unnamed postgresql.exe processes from the connection pool:
>> postgres: db_outnow outnow 127.0.0.1(3384) idle
>
> Hm. I would imagine that as soon as this process does something,
> the messages stop? (It should close its file handle in response
> to a relcache flush that it will read as soon as it becomes active.)
from what i observe i would say the process dies (timeouts?) and then
bgwriter is "happy" again:
here's *all* more information i got from filemon when filtering for one of
the relation that produced the error:
http://rafb.net/paste/results/3uozHD77.html
its pid 3772 that still has a handle open, while all the others have closed
it properly after pid 2780 issued a DELETE.
the process itself has 3 threads that are in:
- postgres.exe+0x1220
- postgres.exe!pg_queue_signal+0x120
- postgres.exe!shmctl+0x80
(i can get stacktraces for all of them if usefull)
pid 3772 died at 05:55:22 (~20min after its last access to the file), and
bgwriter could finally write, and the error messages are gone.
- thomas