From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpng1.m.smailru.net (smtpng1.m.smailru.net [94.100.181.251]) (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 AB25744643A for ; Sun, 8 Nov 2020 21:04:10 +0300 (MSK) From: Vladislav Shpilevoy References: <796ca0ba5fe99ec3c0b8370f1d955dc3c8f23bd2.1604706067.git.v.shpilevoy@tarantool.org> Message-ID: Date: Sun, 8 Nov 2020 19:04:09 +0100 MIME-Version: 1.0 In-Reply-To: <796ca0ba5fe99ec3c0b8370f1d955dc3c8f23bd2.1604706067.git.v.shpilevoy@tarantool.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [Tarantool-patches] [PATCH 1/1] raft: fix crash in worker fiber List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: tarantool-patches@dev.tarantool.org, sergepetrenko@tarantool.org > diff --git a/src/box/raft.c b/src/box/raft.c > index e1e60ce94..914b0d68f 100644 > --- a/src/box/raft.c > +++ b/src/box/raft.c > @@ -682,11 +682,11 @@ raft_worker_f(va_list args) > raft_worker_handle_broadcast(); > is_idle = false; > } > + if (is_idle) { > + assert(raft_is_fully_on_disk()); > + fiber_yield(); > + } > fiber_sleep(0); > - if (!is_idle) > - continue; > - assert(raft_is_fully_on_disk()); > - fiber_yield(); > } > return 0; I changed this part just a little. Because it makes no sense to sleep(0) right after a yield. Force pushed to the branch. ==================== @@ -685,8 +685,9 @@ raft_worker_f(va_list args) if (is_idle) { assert(raft_is_fully_on_disk()); fiber_yield(); + } else { + fiber_sleep(0); } - fiber_sleep(0); } return 0; }