Mike Matrigali (JIRA) wrote:
The case I am trying to work out in my mind is the space reclamation thread. It gets latches on pages and
loops through rows requesting zero duration locks to see if it can purge a row from a page. In the first case
the row we are requesting a lock on will never be purged as it is not possible
for the reclaim space thread to
get a latch on a the page and purge the row we are waiting for a lock on (the
lock request for an update lock
will fail because of our wait). In the second case It can sneak in between the
release of the latch and queue
of the waiting lock.
Looking at the code for purging deleted records, it does not seem to me
that this operation uses the mechanism discussed here. As far as I can
tell, latches are not released until the entire page has been processed.
That is, the latch will not be released if the thread needs to wait
for a lock.
--
Øystein