Skip to content

Commit 958cfbc

Browse files
Remove unneeded field from VACUUM state.
Bugfix commit 5fc8937 effectively made the lock_waiter_detected field from vacuumlazy.c's global state struct into private state owned by lazy_truncate_heap(). Finish this off by replacing the struct field with a local variable.
1 parent ad2da24 commit 958cfbc

File tree

1 file changed

+9
-10
lines changed

1 file changed

+9
-10
lines changed

src/backend/access/heap/vacuumlazy.c

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,6 @@ typedef struct LVRelState
351351
BlockNumber pages_removed; /* pages remove by truncation */
352352
BlockNumber lpdead_item_pages; /* # pages with LP_DEAD items */
353353
BlockNumber nonempty_pages; /* actually, last nonempty page + 1 */
354-
bool lock_waiter_detected;
355354

356355
/* Statistics output by us, for table */
357356
double new_rel_tuples; /* new estimated total # of tuples */
@@ -439,7 +438,8 @@ static IndexBulkDeleteResult *lazy_cleanup_one_index(Relation indrel,
439438
static bool should_attempt_truncation(LVRelState *vacrel,
440439
VacuumParams *params);
441440
static void lazy_truncate_heap(LVRelState *vacrel);
442-
static BlockNumber count_nondeletable_pages(LVRelState *vacrel);
441+
static BlockNumber count_nondeletable_pages(LVRelState *vacrel,
442+
bool *lock_waiter_detected);
443443
static long compute_max_dead_tuples(BlockNumber relblocks, bool hasindex);
444444
static void lazy_space_alloc(LVRelState *vacrel, int nworkers,
445445
BlockNumber relblocks);
@@ -929,7 +929,6 @@ lazy_scan_heap(LVRelState *vacrel, VacuumParams *params, bool aggressive)
929929
vacrel->pages_removed = 0;
930930
vacrel->lpdead_item_pages = 0;
931931
vacrel->nonempty_pages = 0;
932-
vacrel->lock_waiter_detected = false;
933932

934933
/* Initialize instrumentation counters */
935934
vacrel->num_index_scans = 0;
@@ -3165,6 +3164,7 @@ lazy_truncate_heap(LVRelState *vacrel)
31653164
{
31663165
BlockNumber old_rel_pages = vacrel->rel_pages;
31673166
BlockNumber new_rel_pages;
3167+
bool lock_waiter_detected;
31683168
int lock_retry;
31693169

31703170
/* Report that we are now truncating */
@@ -3187,7 +3187,7 @@ lazy_truncate_heap(LVRelState *vacrel)
31873187
* (which is quite possible considering we already hold a lower-grade
31883188
* lock).
31893189
*/
3190-
vacrel->lock_waiter_detected = false;
3190+
lock_waiter_detected = false;
31913191
lock_retry = 0;
31923192
while (true)
31933193
{
@@ -3207,7 +3207,7 @@ lazy_truncate_heap(LVRelState *vacrel)
32073207
* We failed to establish the lock in the specified number of
32083208
* retries. This means we give up truncating.
32093209
*/
3210-
vacrel->lock_waiter_detected = true;
3210+
lock_waiter_detected = true;
32113211
ereport(elevel,
32123212
(errmsg("\"%s\": stopping truncate due to conflicting lock request",
32133213
vacrel->relname)));
@@ -3242,7 +3242,7 @@ lazy_truncate_heap(LVRelState *vacrel)
32423242
* other backends could have added tuples to these pages whilst we
32433243
* were vacuuming.
32443244
*/
3245-
new_rel_pages = count_nondeletable_pages(vacrel);
3245+
new_rel_pages = count_nondeletable_pages(vacrel, &lock_waiter_detected);
32463246
vacrel->blkno = new_rel_pages;
32473247

32483248
if (new_rel_pages >= old_rel_pages)
@@ -3281,8 +3281,7 @@ lazy_truncate_heap(LVRelState *vacrel)
32813281
errdetail_internal("%s",
32823282
pg_rusage_show(&ru0))));
32833283
old_rel_pages = new_rel_pages;
3284-
} while (new_rel_pages > vacrel->nonempty_pages &&
3285-
vacrel->lock_waiter_detected);
3284+
} while (new_rel_pages > vacrel->nonempty_pages && lock_waiter_detected);
32863285
}
32873286

32883287
/*
@@ -3291,7 +3290,7 @@ lazy_truncate_heap(LVRelState *vacrel)
32913290
* Returns number of nondeletable pages (last nonempty page + 1).
32923291
*/
32933292
static BlockNumber
3294-
count_nondeletable_pages(LVRelState *vacrel)
3293+
count_nondeletable_pages(LVRelState *vacrel, bool *lock_waiter_detected)
32953294
{
32963295
BlockNumber blkno;
32973296
BlockNumber prefetchedUntil;
@@ -3343,7 +3342,7 @@ count_nondeletable_pages(LVRelState *vacrel)
33433342
(errmsg("\"%s\": suspending truncate due to conflicting lock request",
33443343
vacrel->relname)));
33453344

3346-
vacrel->lock_waiter_detected = true;
3345+
*lock_waiter_detected = true;
33473346
return blkno;
33483347
}
33493348
starttime = currenttime;

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy