Check for stale db locks when opening write-cursors
authorPanu Matilainen <pmatilai@redhat.com>
Tue, 5 Feb 2013 08:11:19 +0000 (10:11 +0200)
committerPanu Matilainen <pmatilai@redhat.com>
Fri, 7 Jun 2013 07:18:17 +0000 (10:18 +0300)
commitf77f770aef6ecffad8883833af3ef93b99dbdebe
tree74ef6707ea961e94ddac778e3bb70bdb0576354d
parent26389a69ac37f37dd35b12ef340316dc903b3955
Check for stale db locks when opening write-cursors

- During long-running transactions its entirely possible for some
  other player to come and go leaving stale locks behind and cause
  the transaction to get stuck until the cavalry comes along in the
  form of somebody else opening the rpmdb, clearing the blockage.
- Presumably dbenv->failchk() is not entirely free of cost so we only
  do this for writes which are way more critical and also more prone to
  getting stuck.
- dbenv->failchk() could return DB_RUNRECOVER in which case we should
  abort everything but we lack a mechanism to do it... just add
  a reminder comment for now.
(cherry picked from commit 29e7c4b3bd1e67f9de1eaaf9fecf82cae281a7e6)
lib/backend/db3.c