From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from [87.239.111.99] (localhost [127.0.0.1]) by dev.tarantool.org (Postfix) with ESMTP id 174EF6EC55; Sun, 25 Jul 2021 20:41:41 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 174EF6EC55 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1627234901; bh=HopBL/ysjs2lzGQVLtb0TISTtHISLFt0kZmHNJoSbSU=; h=To:References:Date:In-Reply-To:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=deUKv8sEqq+XGXsoMOl8p33/XHfnlB2HiQnc11vsZyn0CEN+8fovBnIACkYX/kPdU tzVcm/gJ+IeyhvZIISDYA7RhiJhB4zq0dPwgGmVR4X7caUNFRZEoz1qW8Ufa2pstr4 NDHGUGT8+h8BA/WTJvl4yv6NioDfrnj8/GAk+o7M= Received: from smtp57.i.mail.ru (smtp57.i.mail.ru [217.69.128.37]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 05C6E6EC55 for ; Sun, 25 Jul 2021 20:41:40 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 05C6E6EC55 Received: by smtp57.i.mail.ru with esmtpa (envelope-from ) id 1m7i8B-0004wS-5y; Sun, 25 Jul 2021 20:41:39 +0300 To: Vladislav Shpilevoy , tarantool-patches@dev.tarantool.org, gorcunov@gmail.com References: <71a67913af750aa487571ee14aafde4e7981b0ee.1626996633.git.v.shpilevoy@tarantool.org> Message-ID: Date: Sun, 25 Jul 2021 20:41:38 +0300 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.12.0 MIME-Version: 1.0 In-Reply-To: <71a67913af750aa487571ee14aafde4e7981b0ee.1626996633.git.v.shpilevoy@tarantool.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-GB X-4EC0790: 10 X-7564579A: 646B95376F6C166E X-77F55803: 4F1203BC0FB41BD941C43E597735A9C30288BCF456A452EC92BAB6D044D5CCDE182A05F5380850400AE2B75AAB335CBA652D6541DA4D269FB7994103761A9596E62BA122491DB35D X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE7526ABEDBD4A111ACEA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F790063795DC1BB912715AE68638F802B75D45FF36EB9D2243A4F8B5A6FCA7DBDB1FC311F39EFFDF887939037866D6147AF826D8C00C723A11E3E3B71F44E2033D0FD4DE117882F4460429724CE54428C33FAD305F5C1EE8F4F765FCF1175FABE1C0F9B6A471835C12D1D9774AD6D5ED66289B52BA9C0B312567BB23117882F446042972877693876707352033AC447995A7AD18C26CFBAC0749D213D2E47CDBA5A96583BA9C0B312567BB2376E601842F6C81A19E625A9149C048EE902A1BE408319B29D7C2347B1D03E769D8FC6C240DEA7642DBF02ECDB25306B2B78CF848AE20165D0A6AB1C7CE11FEE3FE4D9CDE3FF759CF9735652A29929C6CC4224003CC836476EA7A3FFF5B025636E2021AF6380DFAD1A18204E546F3947CB11811A4A51E3B096D1867E19FE1407959CC434672EE6371089D37D7C0E48F6C8AA50765F7900637427B078F297B269AEFF80C71ABB335746BA297DBC24807EABDAD6C7F3747799A X-B7AD71C0: AC4F5C86D027EB782CDD5689AFBDA7A213B5FB47DCBC3458834459D11680B50530F8C2EFBB9F06E99375876A7A0CE309 X-C1DE0DAB: 0D63561A33F958A53720E15E074D9840DC8E6471613E86DF8DE67FE36E9162F1D59269BC5F550898D99A6476B3ADF6B47008B74DF8BB9EF7333BD3B22AA88B938A852937E12ACA7501A9DF589746230F410CA545F18667F91A7EA1CDA0B5A7A0 X-C8649E89: 4E36BF7865823D7055A7F0CF078B5EC49A30900B95165D34E9B0C12ABED551379C9A14E066EF66406FDF4D47994152B55E5C3F35622C6699779C100D93565ABE1D7E09C32AA3244CC3361A7FE4A7B80B0FA66FED8D7BB49ED08D48398F32B4A6FACE5A9C96DEB163 X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu530nj6fImhcD4MUrOEAnl0W826KZ9Q+tr5ycPtXkTV4k65bRjmOUUP8cvGozZ33TWg5HZplvhhXbhDGzqmQDTd6OAevLeAnq3Ra9uf7zvY2zzsIhlcp/Y7m53TZgf2aB4JOg4gkr2biojBHzp66hWLW0rCExQa74Wzg== X-Mailru-Sender: 9482C2B233321BD24D0BA003FCDC793E3D5F76E12AD2115E652D6541DA4D269F0D95629463F16A6A32C2A64043BFB05F66FEC6BF5C9C28D9D2F9AC31ED4B18F0B80F102789B70DF27402F9BA4338D657ED14614B50AE0675 X-Mras: Ok Subject: Re: [Tarantool-patches] [PATCH 1/1] election: fix box.ctl.promote() crash on 0 LSN X-BeenThere: tarantool-patches@dev.tarantool.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Sergey Petrenko via Tarantool-patches Reply-To: Sergey Petrenko Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" 23.07.2021 02:31, Vladislav Shpilevoy пишет: > box.ctl.promote() in case of non-empty limbo tried to wait for > quorum of instances confirming that they have received the latest > data. > > The quorum waiting is done via walking the relays and filling a > vclock object using vclock_follow with the old leader's LSN as it > is seen by the replicas. > > Some replicas might have vclock[old_leader_id] == 0 if they didn't > receive anything from it. Vclock_follow() crashed at attempt to > follow these 0 LSNs, because it is initialized with zeros, and > in vclock_follow() it has an assert: new_lsn > old_lsn. This > resulted into 0 > 0 and the crash. > > The patch makes the quorum collector skip these 0 LSNs. > > Part of #5430 Hi! Thanks for the patch! ... > diff --git a/test/replication/gh-5430-master1.lua b/test/replication/gh-5430-master1.lua > new file mode 100644 > index 000000000..0f57c87c1 > --- /dev/null > +++ b/test/replication/gh-5430-master1.lua > @@ -0,0 +1,15 @@ > +#!/usr/bin/env tarantool > + > +require('console').listen(os.getenv('ADMIN')) > + > +box.cfg({ > + listen = 'unix/:./master1.sock', > + replication = { > + 'unix/:./master1.sock', > + 'unix/:./master2.sock', > + }, > + replication_synchro_quorum = 2, > + replication_timeout = 0.5, > +}) > + > +box.schema.user.grant('guest', 'super') > diff --git a/test/replication/gh-5430-master2.lua b/test/replication/gh-5430-master2.lua > new file mode 100644 > index 000000000..b1aeccfe0 > --- /dev/null > +++ b/test/replication/gh-5430-master2.lua > @@ -0,0 +1,14 @@ > +#!/usr/bin/env tarantool > + > +require('console').listen(os.getenv('ADMIN')) > + > +box.cfg({ > + listen = 'unix/:./master2.sock', > + replication = { > + 'unix/:./master1.sock', > + 'unix/:./master2.sock', > + }, > + read_only = true, > + replication_synchro_quorum = 2, > + replication_timeout = 0.5, > +}) > diff --git a/test/replication/gh-5430-master3.lua b/test/replication/gh-5430-master3.lua > new file mode 100644 > index 000000000..eff479a68 > --- /dev/null > +++ b/test/replication/gh-5430-master3.lua > @@ -0,0 +1,12 @@ > +#!/usr/bin/env tarantool > + > +require('console').listen(os.getenv('ADMIN')) > + > +box.cfg({ > + listen = 'unix/:./master3.sock', > + replication = { > + 'unix/:./master1.sock', > + }, > + replication_synchro_quorum = 3, > + replication_timeout = 0.5, > +}) I'd create a single lua file, gh-5430-master.lua, and 3 symlinks. listening socket may be deduced from filename, and replication_synchro_quorum might be passed as a parameter. I don't insist, LGTM anyways.