| From: | Michael Paquier <michael(dot)paquier(at)gmail(dot)com> |
|---|---|
| To: | wangchuanting(at)huawei(dot)com |
| Cc: | PostgreSQL mailing lists <pgsql-bugs(at)postgresql(dot)org>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
| Subject: | Re: BUG #14680: startup process on standby encounter a deadlock of TwoPhaseStateLock when redo 2PC xlog |
| Date: | 2017-05-31 19:30:56 |
| Message-ID: | CAB7nPqQeOx96RC19STwR4eqgPX-5J8Vbow7n2_3ghfNtM3N+NQ@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-bugs pgsql-hackers |
On Wed, May 31, 2017 at 6:57 AM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> wangchuanting(at)huawei(dot)com writes:
>> startup process on standby encounter a deadlock of TwoPhaseStateLock when
>> redo 2PC xlog.
>
> Please provide an example of how to get into this state.
That would help. Are you seeing in the logs something like "removing
future two-phase state from memory for XXX" or "removing stale
two-phase state from shared memory for XXX"?
Even with that, the light-weight lock sequence taken in those code
paths look definitely wrong to me, we should not take twice
TwoPhaseStateLock in the same code path. I think that we should remove
the lock acquisitions in RemoveGXact() and PrepareRedoRemove, and then
upgrade the locks of PrescanPreparedTransactions() and
StandbyRecoverPreparedTransactions() to be exclusive. We still need to
keep a lock as CheckPointTwoPhase() may still be triggered by the
checkpoint. Tom, what do you think?
--
Michael
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Andres Freund | 2017-05-31 21:24:38 | Re: [BUGS] Concurrent ALTER SEQUENCE RESTART Regression |
| Previous Message | Tom Lane | 2017-05-31 13:57:27 | Re: BUG #14680: startup process on standby encounter a deadlock of TwoPhaseStateLock when redo 2PC xlog |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Mark Dilger | 2017-05-31 19:40:22 | pg_class.relpartbound definition overly brittle |
| Previous Message | Magnus Hagander | 2017-05-31 18:57:18 | Re: Re: [GENERAL] pg_basebackup error: replication slot "pg_basebackup_2194" already exists |