On Mon, Nov 08, 2004 at 08:06:02PM -0500, Tom Lane wrote:
> I believe that if VACUUM wants to delete a tuple that is on the same
> physical page that a cursor is currently stopped on, the vacuum has to
> wait until the cursor moves off that page. So the vacuum could
> definitely be blocked by the cursor if the application is slow about
> advancing the cursor. This isn't a deadlock though, unless the
> application is also waiting for the vacuum to finish.
Well, that puts me back to one of my first theories, that I have an
effective deadlock due to the lack of a dedicated request processing
thread to handle the enumeration session requests. All the other
threads have blocked waiting to handle other types of requests.
I thought I had ruled it out from my reading that a read only cursor
wouldn't block a vacuum, but I guess I was wrong. Thanks, I'll implement
my work around.