Re: BUG #16125: Crash of PostgreSQL's wal sender during logicalreplication
От | Alvaro Herrera |
---|---|
Тема | Re: BUG #16125: Crash of PostgreSQL's wal sender during logicalreplication |
Дата | |
Msg-id | 20191127175935.GA20945@alvherre.pgsql обсуждение исходный текст |
Ответ на | Re: BUG #16125: Crash of PostgreSQL's wal sender during logicalreplication (Andres Freund <andres@anarazel.de>) |
Ответы |
Re: BUG #16125: Crash of PostgreSQL's wal sender during logicalreplication
|
Список | pgsql-bugs |
On 2019-Nov-19, Andres Freund wrote: > > > 2525:rmgr: Heap len (rec/tot): 1671/ 1671, tx: 1667601530, lsn: 25EE/D66F5508, prev 25EE/D66F54C8, desc:INSERT off 2, blkref #0: rel 1663/13018/88964792 blk 18475 > > > 2532:rmgr: Heap len (rec/tot): 54/ 54, tx: 1667601530, lsn: 25EE/D66F7EF0, prev 25EE/D66F7EA0, desc:DELETE off 2 , blkref #0: rel 1663/13018/88964792 blk 18475 > > So, this DELETE change triggers the issue. If I understand it correctly, > > that means the transaction locked the tuple and then deleted it. But I > > don't see any record about the lock. > > Hm. I don't think it necessarily means that. compute_new_xmax_infomask(), when > called from heap_delete(), will e.g. set HEAP_KEYS_UPDATED when > > if (old_infomask & HEAP_XMAX_INVALID) > > is true. Which is the most common case. I actually find it *more* > curious to *not* see that for a delete. I've not traced fully through > it, yet. > > > Alvaro, it's not clear to me whether the the multixact codepaths in > compute_new_xmax_infomask() actually work as expected for deletes. So, what's really happening here is heap_insert(speculative) followed by heap_abort_speculative(). That seems to explain the above WAL sequence. I *think* the speculative insertion code in reorderbuffer simply delays the tuple insertion until it is confirmed; so this sequence would result in nothing at all happening at ReorderBufferCommit. Unless something has messed up the state somehow. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
В списке pgsql-bugs по дате отправления: