I wrote:
> The idea I had in mind was to compensate for adding list-removal logic
> by getting rid of the concept of an unused entry. If the removal is
> conditional then you can't do that and you end up with the complications
> of both methods. Anyway I've not tried to code it yet.
I concluded this would probably be a loser performance-wise, because it
would add a couple of palloc/pfree cycles to the processing of each
multi-chunk message, whether there was any contention or not. So I
committed the patch with just some cosmetic cleanups.
regards, tom lane