From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Simon Riggs <simon(at)2ndquadrant(dot)com> |
Cc: | PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: PushActiveSnapshot(GetTransactionSnapshot()) |
Date: | 2011-08-23 14:21:35 |
Message-ID: | 1314108938-sup-8646@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Excerpts from Simon Riggs's message of mar ago 23 10:56:17 -0300 2011:
> On Mon, Aug 22, 2011 at 7:07 PM, Alvaro Herrera
> <alvherre(at)commandprompt(dot)com> wrote:
> > Excerpts from Simon Riggs's message of dom ago 21 16:23:39 -0300 2011:
> >> In common cases of snapshot use we run GetSnapshotData() into a
> >> statically allocated snapshot, then immediately copy the static struct
> >> into a dynamically allocated copy.
> >>
> >> The static allocation was designed to remove the overhead of dynamic
> >> allocation, but then we do it anyway.
> >>
> >> The snapmgr code does this explicitly, but the reason isn't
> >> documented, it just says we must do this.
> >
> > IIRC the active snapshot is scribbled onto by some operations, which is
> > why the copy is mandatory. Maybe there's some way to optimize things so
> > that the copy is done only when necessary. IIRC the copying of the
> > ActiveSnapshot was only introduced because some subtle bugs were
> > detected in the code without copy. When I introduced the mandatory
> > copy, I don't remember thinking about the statically allocated struct.
>
> "Some operations", "subtle bugs".
>
> Do you have any further information on those?
See commits 07cefdfb7a1c1a7ae96783c9723102250a4c3bad and
caa4cfa3697472a6673eb817eb34681684cba14f
--
Álvaro Herrera <alvherre(at)commandprompt(dot)com>
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support
From | Date | Subject | |
---|---|---|---|
Next Message | Simon Riggs | 2011-08-23 15:06:04 | Deferred Snapshots |
Previous Message | Simon Riggs | 2011-08-23 13:56:17 | Re: PushActiveSnapshot(GetTransactionSnapshot()) |