<html><head></head><body dir="auto" style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div class="ApplePlainTextBody">Hi everyone!<br><br>I didn't noticed this thread for too long somehow, sorry.<br><br><blockquote type="cite">8 нояб. 2018 г., в 6:46, Peter Geoghegan <pg(at)bowt(dot)ie> написал(а):<br><br>I don't think<br>the general "there can't be any inserters at this subtree" thing works<br>given that we have to couple buffer locks when moving right for other<br>reasons. We call ginStepRight() within ginFinishSplit(), for reasons<br>that date back to bug fix commit ac4ab97e from 2013 -- that detail is<br>probably important, because it seems to be what breaks the subtree<br>design (we don't delete in two phases or anything in GIN).<br></blockquote><br>ginVacuumPostingTreeLeaves() holds LockBufferForCleanup() on subtree root b.<br>Thus there may be no GinBtreeStack's holding pin on b at the moment.<br>When you ginStepRight(b) to the parent in ginFinishSplit(), you always get to the buffer from your stack.<br>Hence you can never have ginFinishSplit() deadlock with cleanup of subtree whose root is LockBufferForCleanup()'d.<br><br>Is this correct or did I miss something?<br><br>But we have a deadlock at hand, I'll think more about it. Something with locking protocol is clearly wrong.<br><br><blockquote type="cite">11 нояб. 2018 г., в 22:33, chenhj <chjischj(at)163(dot)com> написал(а):<br><br>The order of get lwlock in ginRedoDeletePage() may should be change from "dbuffer->pbuffer->lbuffer" to "lbuffer->dbuffer->pbuffer" . Is this right?<br></blockquote><br>This looks correct to me.<br><br>Best regards, Andrey Borodin.</div></body></html>