Re: SSI bug? - Mailing list pgsql-hackers

From Kevin Grittner
Subject Re: SSI bug?
Date
Msg-id 4D8F4C56020000250003BD05@gw.wicourts.gov
Whole thread Raw
In response to SSI bug?  (yamt@mwd.biglobe.ne.jp (YAMAMOTO Takashi))
List pgsql-hackers
Robert Haas  wrote:
> I don't see much advantage in changing these to asserts - in a
> debug build, that will promote ERROR to PANIC; whereas in a
> production build, they'll cause a random failure somewhere
> downstream.
The reason Assert is appropriate is that it is *impossible* to hit
that condition right now for two independent reasons.  Both would
need to be broken by someone doing clumsy programming changes for
these assertions to fire.
(1)  Both assertions follow the attempt to get record from the
structure allocated with this call:
   SerializableXidHash = ShmemInitHash("SERIALIZABLEXID hash",                                       max_table_size,
                                  max_table_size,                                       &info,
            hash_flags);
 
Note that it is allocated at its maximum size, and that one of these
records can't exist without a corresponding SERIALIZABLEXACT
structure, and these are allocated out of a fixed-sized area which is
allocated based on the same max_table_size value.
(2)  The preceding call to hash_search is made with a HASHACTION of
HASH_ENTER, not HASH_ENTER_NULL.  So it can't return without a valid
pointer.  It will ereport at the ERROR level rather than do that.
So I'm not sure the Assert is even warranted, versus just doing
nothing; but the ereport is certainly pointless.
> The HASH_ENTER to HASH_ENTER_NULL changes look like they might be
> needed, though.
That would provide a hint pointing toward the GUC which controls
allocation space for the structure we failed to get.  That seems
better than the generic message we're now getting.  If we don't
change them to HASH_ENTER_NULL we can get rid of our ereport since it
will never be hit.
Of course I'm sure Tom will clean such stuff up if it comes to him in
the current form; it just seems nicer to clean up known issues that
surface from testing before it gets to him, where possible.
-Kevin


pgsql-hackers by date:

Previous
From: Jan Wieck
Date:
Subject: Re: Lock problem with autovacuum truncating heap
Next
From: "Kevin Grittner"
Date:
Subject: Re: SSI bug?