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 696E66EC55; Tue, 20 Jul 2021 23:02:26 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 696E66EC55 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1626811346; bh=KPfm8CcIeXnehqaBSYf7SZtr9WbeK8JfYVEOLiz20UM=; 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=xXgUN/CHJ/SRKsYasjW+er2wJbHT8a+BQaIP00HRMfIR3CsXeRwvN55ZoMKhV1gj7 VynIS8LQGgepvTxiClVURT37u4YaN+h0vge7Z+BjRSHoqkXezGDlogJInSBg0+1bhb OSqhQbPm75kJUvDgYImXcoZEBlpc4gbPBpTLLceA= Received: from smtpng3.i.mail.ru (smtpng3.i.mail.ru [94.100.177.149]) (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 DC9B56EC55 for ; Tue, 20 Jul 2021 23:02:24 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org DC9B56EC55 Received: by smtpng3.m.smailru.net with esmtpa (envelope-from ) id 1m5vwd-0004cs-OT; Tue, 20 Jul 2021 23:02:24 +0300 To: Konstantin Osipov , tarantool-patches@dev.tarantool.org, gorcunov@gmail.com, sergepetrenko@tarantool.org References: <0c92a88ff1d392f8b03de59be8cb19a162bf78f8.1626392372.git.v.shpilevoy@tarantool.org> <20210716142959.GC146960@starling> <20210719091248.GA4257@starling> <20210720084947.GA58808@starling> Message-ID: <5cee0ccb-9c87-701c-96e7-2bee12ccc365@tarantool.org> Date: Tue, 20 Jul 2021 22:02:22 +0200 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: <20210720084947.GA58808@starling> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-4EC0790: 10 X-7564579A: B8F34718100C35BD X-77F55803: 4F1203BC0FB41BD941C43E597735A9C36A98DBA789EBB6AEFB5A483DCE5E7579182A05F53808504086566DB6D288AAB465701F318F1579FEDA8D7C5306922ED9513C963414C22ACF X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE73FF03EEFC7AB5FB4EA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F7900637ED2BA022FBF94AB68638F802B75D45FF36EB9D2243A4F8B5A6FCA7DBDB1FC311F39EFFDF887939037866D6147AF826D83620C9BBFA61F614BDA2CBEF86C91EB9117882F4460429724CE54428C33FAD305F5C1EE8F4F765FC2EE5AD8F952D28FBA471835C12D1D9774AD6D5ED66289B52BA9C0B312567BB23117882F446042972877693876707352033AC447995A7AD182CC0D3CB04F14752D2E47CDBA5A96583BA9C0B312567BB231DD303D21008E29813377AFFFEAFD269A417C69337E82CC2E827F84554CEF50127C277FBC8AE2E8BA83251EDC214901ED5E8D9A59859A8B613439FA09F3DCB32089D37D7C0E48F6C5571747095F342E88FB05168BE4CE3AF X-C1DE0DAB: 0D63561A33F958A5E9BDC5FD453B31E57F20AC6DBFDC72251E652F0F901FFF8AD59269BC5F550898D99A6476B3ADF6B47008B74DF8BB9EF7333BD3B22AA88B938A852937E12ACA7501A9DF589746230F410CA545F18667F91A7EA1CDA0B5A7A0 X-C8649E89: 4E36BF7865823D7055A7F0CF078B5EC49A30900B95165D344A431191C56981FE72B54156AD8216884E3BA9EF0587ECE5763C576EF3ADF08F203541C7656FC5801D7E09C32AA3244C45E7EFB505AB99C2EE3B8EC78EAE010FF165894D92D62706927AC6DF5659F194 X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu530nj6fImhcD4MUrOEAnl0W826KZ9Q+tr5ycPtXkTV4k65bRjmOUUP8cvGozZ33TWg5HZplvhhXbhDGzqmQDTd6OAevLeAnq3Ra9uf7zvY2zzsIhlcp/Y7m53TZgf2aB4JOg4gkr2biojJX8TSRcb/ShtRbTMKXWC4g== X-Mailru-Sender: 689FA8AB762F7393C37E3C1AEC41BA5D4FD2D5292C4B49275BE72D1532E9C88E3841015FED1DE5223CC9A89AB576DD93FB559BB5D741EB963CF37A108A312F5C27E8A8C3839CE0E267EA787935ED9F1B X-Mras: Ok Subject: Re: [Tarantool-patches] [PATCH 1/2] replication: introduce ballot.can_be_leader 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: Vladislav Shpilevoy via Tarantool-patches Reply-To: Vladislav Shpilevoy Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" On 20.07.2021 10:49, Konstantin Osipov wrote: > * Vladislav Shpilevoy [21/07/20 01:09]: >>>>> Curious why did you add this feature in the first place, I mean >>>>> "eligibility"? Each voter has to be able to become a leader, >>>>> otherwise raft liveness guarantees are violated. Raft has >>>>> learners, but learners neither vote nor can become leaders. >>>> >>>> Voters are nodes which an admin does not want to be a leader. For >>>> instance, they are too far away physically. As voters, they might >>>> help to elect a leader, for example, if there are just 3 nodes one >>>> of which is a voter. >>>> >>>> Another application is when you specifically start 1 node as a >>>> voter and 2 candidates. The voter might skip all the replication >>>> data and work on a slow small machine. >>>> >>>> It can help to form a majority. We are planning to make this >>>> feature even easier to use by adding dataless nodes just for >>>> voting. >>>> >>>> As for Raft, it should not bring any problems. In Raft you can >>>> say that all nodes are candidates, but some of them are so slow, >>>> that they can never vote for themselves in time. Raft still works, >>>> and you essentially have 'voters'. >>> >>> Imagine there are nodes A, B, C, D, E. >>> A is a leader, E is a voter which can not become a leader. >>> >>> Imagine A's log index is 5, B = 4, C = 3, D = 2, E = 5. >>> >>> The majority's log index is 4, so entry 4 is committed. A dies, B >>> is partitioned away. The cluster is stuck, because neither C nor B >>> can get a quorum (3 votes). >> >> But how is it different from the real Raft? In normal Raft I can say >> E simply is too slow to make any actions. It is just stuck or died. >> The cluster will be stuck then, yes. Not much you can do here. > > In a real raft: > - liveness is guaranteed if quorum is present; this guarantee here > is not held > - you never sacrifice safety for liveness; you never lose > committed entries if quorum is present; and you never lose it > unnoticed! here you can lose a committed entry and not notice > it. Please, show me an example. The example above only shows that the election might stop if there are issues with the quorum. And this will happen regardless of whether I have voter role or not. In normal Raft you can kill 3/5 nodes and nothing will work too.