Re: inefficient loop in StandbyReleaseLockList() - Mailing list pgsql-hackers

From Andres Freund
Subject Re: inefficient loop in StandbyReleaseLockList()
Date
Msg-id 20211028220748.6ekrl74minwq75f4@alap3.anarazel.de
Whole thread Raw
In response to Re: inefficient loop in StandbyReleaseLockList()  (Kyotaro Horiguchi <horikyota.ntt@gmail.com>)
Responses Re: inefficient loop in StandbyReleaseLockList()  (Andres Freund <andres@anarazel.de>)
List pgsql-hackers
Hi,

On 2021-10-28 15:57:51 +0900, Kyotaro Horiguchi wrote:
> I found several other instances of the pattern
> "while(list){list_delete_first(); /*no-break*/}" in
> llvm_release_context, gistProcessEmptyingQueue, AtEOXact_Namespace and
> maybe transformGraph and processState in trgm_regexp.c.  We might want
> to apply this technique to the three first, and maybe to the last two.

We should be careful with changes like this, because there's some advantages
in the while(!empty) pattern too. Iterating over the whole list doesn't work
if there's any other modifications to the list, or if there's a chance of
errors. For the latter there just needs to be a CHECK_FOR_INTERRUPTS()
somewhere...

Greetings,

Andres Freund



pgsql-hackers by date:

Previous
From: Justin Pryzby
Date:
Subject: Re: Improve logging when using Huge Pages
Next
From: Andres Freund
Date:
Subject: Re: inefficient loop in StandbyReleaseLockList()