Re: [HACKERS] Error: dsa_area could not attach to a segment that hasbeen freed - Mailing list pgsql-hackers

From Craig Ringer
Subject Re: [HACKERS] Error: dsa_area could not attach to a segment that hasbeen freed
Date
Msg-id CAMsr+YH4GnTSWkEOt7Eb-GYJ9hwsEa4gFWdUzh6YARFRxwFD7A@mail.gmail.com
Whole thread Raw
In response to Re: [HACKERS] Error: dsa_area could not attach to a segment that hasbeen freed  (Thomas Munro <thomas.munro@enterprisedb.com>)
List pgsql-hackers
On 21 September 2017 at 05:50, Thomas Munro <thomas.munro@enterprisedb.com> wrote:
On Thu, Sep 21, 2017 at 12:59 AM, Robert Haas <robertmhaas@gmail.com> wrote:
> On Wed, Sep 20, 2017 at 5:54 AM, Craig Ringer <craig@2ndquadrant.com> wrote:
>> By the way, dsa.c really needs a cross-reference to shm_toc.c and vice
>> versa. With a hint as to when each is appropriate.
>
> /me blinks.
>
> Aren't those almost-entirely-unrelated facilities?

I think I see what Craig means.

1.  A DSM segment works if you know how much space you'll need up
front so that you can size it. shm_toc provides a way to exchange
pointers into it with other backends in the form of shm_toc keys
(perhaps implicitly, in the form of well known keys or a convention
like executor node ID -> shm_toc key).  Examples: Fixed sized state
for parallel-aware executor nodes, and fixed size parallel executor
infrastructure.

2.  A DSA area is good if you don't know how much space you'll need
yet.  dsa_pointer provides a way to exchange pointers into it with
other backends.  Examples: A shared cache, an in-memory database
object like Gaddam Sai Ram's graph index extension, variable sized
state for parallel-aware executor nodes, the shared record typmod
registry stuff.

Perhaps confusingly we also support DSA areas inside DSM segments,
there are DSM segments inside DSA areas.  We also use DSM segments as
a kind of shared resource cleanup mechanism, and don't yet provide an
equivalent for DSA.  I haven't proposed anything like that because I
feel like there may be a better abstraction of reliable scoped cleanup
waiting to be discovered (as I think Craig was also getting at).

Well said, and what I would've wanted to say if I could've figured it out well enough to express it.

Hence needing some kind of README or cross reference to help people know which facility/facilities are suitable for their needs... and actually discover them.

(A hint on RequestAddinShmemSpace etc pointing to DSM + DSA would be good too)

--
 Craig Ringer                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services

pgsql-hackers by date:

Previous
From: Mithun Cy
Date:
Subject: Re: [HACKERS] POC: Cache data in GetSnapshotData()
Next
From: Robert Haas
Date:
Subject: Re: [HACKERS] POC: Cache data in GetSnapshotData()