From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp50.i.mail.ru (smtp50.i.mail.ru [94.100.177.110]) (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 796D8469710 for ; Wed, 10 Jun 2020 13:45:50 +0300 (MSK) References: <20200609125302.279888-3-gorcunov@gmail.com> From: Serge Petrenko Message-ID: <6011fd25-969e-5f0e-b979-333ca03cea45@tarantool.org> Date: Wed, 10 Jun 2020 13:45:49 +0300 MIME-Version: 1.0 In-Reply-To: <20200609125302.279888-3-gorcunov@gmail.com> Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: 8bit Content-Language: en-GB Subject: Re: [Tarantool-patches] [PATCH 2/2] box: use tnt_raise for quorum check List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Cyrill Gorcunov , tml Cc: v.shpilevoy@tarantool.org 09.06.2020 15:53, Cyrill Gorcunov пишет: > All other check routines uses tnt_raise > so no need to introduce a different approach. > > Signed-off-by: Cyrill Gorcunov > --- > src/box/box.cc | 9 ++++----- > 1 file changed, 4 insertions(+), 5 deletions(-) > > diff --git a/src/box/box.cc b/src/box/box.cc > index 792c3c394..179feccf6 100644 > --- a/src/box/box.cc > +++ b/src/box/box.cc > @@ -485,9 +485,9 @@ box_check_replication_sync_quorum(void) > { > int quorum = cfg_geti("replication_sync_quorum"); > if (quorum <= 0 || quorum > VCLOCK_MAX) { > - diag_set(ClientError, ER_CFG, "replication_sync_quorum", > - "the value must be greater than and less than " > - "maximal number of replicas"); > + tnt_raise(ClientError, ER_CFG, "replication_sync_quorum", > + "the value must be greater than and less than " > + "maximal number of replicas"); > return -1; > } > return quorum; > @@ -675,8 +675,7 @@ box_check_config() > box_check_replication_connect_timeout(); > box_check_replication_connect_quorum(); > box_check_replication_sync_lag(); > - if (box_check_replication_sync_quorum() < 0) > - diag_raise(); > + box_check_replication_sync_quorum(); > box_check_replication_sync_timeout(); > box_check_readahead(cfg_geti("readahead")); > box_check_checkpoint_count(cfg_geti("checkpoint_count")); Hi! Thanks for the catches. I applied your fixes and fixed 2 more tiny errors & pushed all on the new branch: sp/gh-4847-wal-confirm-msg-v3 Here's the diff (It's copypasted so don't be afraid of spaces instead of tabs) diff --git a/src/box/applier.cc b/src/box/applier.cc index 1dc977424..cf7215d43 100644 --- a/src/box/applier.cc +++ b/src/box/applier.cc @@ -271,7 +271,7 @@ applier_on_confirm(struct trigger *trig, void *data)  static int  process_confirm(struct request *request)  { -       assert(request->header->type = IPROTO_CONFIRM); +       assert(request->header->type == IPROTO_CONFIRM);         uint32_t replica_id;         struct txn *txn = in_txn();         int64_t *lsn = (int64_t *) region_alloc(&txn->region, sizeof(int64_t)); diff --git a/src/box/box.cc b/src/box/box.cc index 792c3c394..12ae258a8 100644 --- a/src/box/box.cc +++ b/src/box/box.cc @@ -485,9 +485,9 @@ box_check_replication_sync_quorum(void)  {         int quorum = cfg_geti("replication_sync_quorum");         if (quorum <= 0 || quorum > VCLOCK_MAX) { -               diag_set(ClientError, ER_CFG, "replication_sync_quorum", -                        "the value must be greater than and less than " -                        "maximal number of replicas"); +               tnt_raise(ClientError, ER_CFG, "replication_sync_quorum", +                         "the value must be greater than zero and less " +                         "than maximal number of replicas");                 return -1;         }         return quorum; @@ -675,8 +675,7 @@ box_check_config()         box_check_replication_connect_timeout();         box_check_replication_connect_quorum();         box_check_replication_sync_lag(); -       if (box_check_replication_sync_quorum() < 0) -               diag_raise(); +       box_check_replication_sync_quorum();         box_check_replication_sync_timeout();         box_check_readahead(cfg_geti("readahead")); box_check_checkpoint_count(cfg_geti("checkpoint_count")); diff --git a/src/box/txn.c b/src/box/txn.c index 3b331fecc..07704e304 100644 --- a/src/box/txn.c +++ b/src/box/txn.c @@ -667,7 +667,8 @@ txn_commit_async(struct txn *txn)         if (journal_write_async(req) != 0) {                 fiber_set_txn(fiber(), txn);                 txn_rollback(txn); -               txn_limbo_abort(&txn_limbo, limbo_entry); +               if (is_sync) +                       txn_limbo_abort(&txn_limbo, limbo_entry);                 diag_set(ClientError, ER_WAL_IO);                 diag_log(); diff --git a/src/box/txn_limbo.c b/src/box/txn_limbo.c index daec98317..896078db4 100644 --- a/src/box/txn_limbo.c +++ b/src/box/txn_limbo.c @@ -79,6 +79,7 @@ txn_limbo_remove(struct txn_limbo *limbo, struct txn_limbo_entry *entry)         assert(!rlist_empty(&entry->in_queue));         assert(rlist_first_entry(&limbo->queue, struct txn_limbo_entry,                                  in_queue) == entry); +       (void) limbo;         rlist_del_entry(entry, in_queue);  } -- Serge Petrenko