| From: | Jeff Janes <jeff(dot)janes(at)gmail(dot)com> | 
|---|---|
| To: | Simon Riggs <simon(at)2ndquadrant(dot)com> | 
| Cc: | pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> | 
| Subject: | Re: Spurious standby query cancellations | 
| Date: | 2015-12-24 05:40:41 | 
| Message-ID: | CAMkU=1yH9UBRywyi5Mx3QpVR5YMbbOCNZ+_dFSJYmG-SZOPLhA@mail.gmail.com | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-hackers | 
On Wed, Sep 23, 2015 at 11:33 PM, Jeff Janes <jeff(dot)janes(at)gmail(dot)com> wrote:
>
> On further thought, neither do I.  The attached patch inverts
> ResolveRecoveryConflictWithLock to be called back from the lmgr code so that
> is it like ResolveRecoveryConflictWithBufferPin code.  It does not try to
> cancel the conflicting lock holders from the signal handler, rather it just
> loops an extra time and cancels the transactions on the next call.
>
> It looks like the deadlock detection is adequately handled within normal
> lmgr code within the back-ends of the other parties to the deadlock, so I
> didn't do a timeout for deadlock detection purposes.
I was testing that this still applies to git HEAD.  And it doesn't due
to the re-factoring of lock.h into lockdef.h.  (And apparently it
never actually did, because that refactoring happened long before I
wrote this patch.  I guess I must have done this work against
9_5_STABLE.)
standby.h cannot include lock.h because standby.h is included
indirectly by pg_xlogdump.  But it has to get LOCKTAG which is only in
lock.h.
Does this mean that standby.h also needs to get parts spun off into a
new standbydef.h that can be included from front-end code?
standby.h doesn't need to know the internals of LOCKTAG.  It just
needs to declare a function that receives it as an opaque pointer.  I
don't know if that info helps resolve the situation, though.
Cheers,
Jeff
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Fabien COELHO | 2015-12-24 06:28:12 | Re: Let PostgreSQL's On Schedule checkpoint write buffer smooth spread cycle by tuning IsCheckpointOnSchedule? | 
| Previous Message | Peter Geoghegan | 2015-12-24 05:26:52 | Re: Using quicksort for every external sort run |