From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpng2.m.smailru.net (smtpng2.m.smailru.net [94.100.179.3]) (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 CF071445321 for ; Mon, 13 Jul 2020 17:18:42 +0300 (MSK) From: Aleksandr Lyapunov Date: Mon, 13 Jul 2020 17:18:05 +0300 Message-Id: <1594649887-15890-2-git-send-email-alyapunov@tarantool.org> In-Reply-To: <1594649887-15890-1-git-send-email-alyapunov@tarantool.org> References: <1594649887-15890-1-git-send-email-alyapunov@tarantool.org> Subject: [Tarantool-patches] [PATCH v2 1/3] alter: use good c++ style List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: tarantool-patches@dev.tarantool.org Cc: v.shpilevoy@tarantool.org We should use noexcept where it's appropriate. 1.It informs a developer he could not care about exception safety 2.It instructs a compiler to check throws if possible We should override for compile-time check of misprints in names of methods and types of arguments. Part of #5153 --- src/box/alter.cc | 180 +++++++++++++++++++++++++++---------------------------- 1 file changed, 90 insertions(+), 90 deletions(-) diff --git a/src/box/alter.cc b/src/box/alter.cc index 249cee2..15a51d0 100644 --- a/src/box/alter.cc +++ b/src/box/alter.cc @@ -765,7 +765,7 @@ struct alter_space; class AlterSpaceOp { public: - AlterSpaceOp(struct alter_space *alter); + explicit AlterSpaceOp(struct alter_space *alter); /** Link in alter_space::ops. */ struct rlist link; @@ -774,7 +774,7 @@ public: * the space definition and/or key list that will be used * for creating the new space. Must not yield or fail. */ - virtual void alter_def(struct alter_space * /* alter */) {} + virtual void alter_def(struct alter_space * /* alter */) noexcept {} /** * Called after creating a new space. Used for performing * long-lasting operations, such as index rebuild or format @@ -788,21 +788,21 @@ public: * state to the new space (e.g. move unchanged indexes). * Must not yield or fail. */ - virtual void alter(struct alter_space * /* alter */) {} + virtual void alter(struct alter_space * /* alter */) noexcept {} /** * Called after the change has been successfully written * to WAL. Must not fail. */ virtual void commit(struct alter_space * /* alter */, - int64_t /* signature */) {} + int64_t /* signature */) noexcept {} /** * Called in case a WAL error occurred. It is supposed to undo * the effect of AlterSpaceOp::prepare and AlterSpaceOp::alter. * Must not fail. */ - virtual void rollback(struct alter_space * /* alter */) {} + virtual void rollback(struct alter_space * /* alter */) noexcept {} - virtual ~AlterSpaceOp() {} + virtual ~AlterSpaceOp() noexcept {} void *operator new(size_t size) { @@ -984,7 +984,7 @@ struct mh_i32_t *AlterSpaceLock::registry; * Replace the old space with a new one in the space cache. */ static int -alter_space_commit(struct trigger *trigger, void *event) +alter_space_commit(struct trigger *trigger, void *event) noexcept { struct txn *txn = (struct txn *) event; struct alter_space *alter = (struct alter_space *) trigger->data; @@ -1002,12 +1002,8 @@ alter_space_commit(struct trigger *trigger, void *event) * indexes into their new places. */ class AlterSpaceOp *op; - try { - rlist_foreach_entry(op, &alter->ops, link) - op->commit(alter, signature); - } catch (Exception *e) { - return -1; - } + rlist_foreach_entry(op, &alter->ops, link) + op->commit(alter, signature); alter->new_space = NULL; /* for alter_space_delete(). */ /* @@ -1029,7 +1025,7 @@ alter_space_commit(struct trigger *trigger, void *event) * alter_space_commit() failure (unlikely) */ static int -alter_space_rollback(struct trigger *trigger, void * /* event */) +alter_space_rollback(struct trigger *trigger, void * /* event */) noexcept { struct alter_space *alter = (struct alter_space *) trigger->data; /* Rollback alter ops */ @@ -1188,9 +1184,9 @@ alter_space_do(struct txn_stmt *stmt, struct alter_space *alter) class CheckSpaceFormat: public AlterSpaceOp { public: - CheckSpaceFormat(struct alter_space *alter) + explicit CheckSpaceFormat(struct alter_space *alter) :AlterSpaceOp(alter) {} - virtual void prepare(struct alter_space *alter); + void prepare(struct alter_space *alter) override; }; void @@ -1222,15 +1218,15 @@ public: * names into an old dictionary and deletes new one. */ struct tuple_dictionary *new_dict; - virtual void alter_def(struct alter_space *alter); - virtual void alter(struct alter_space *alter); - virtual void rollback(struct alter_space *alter); - virtual ~ModifySpace(); + void alter_def(struct alter_space *alter) noexcept override; + void alter(struct alter_space *alter) noexcept override; + void rollback(struct alter_space *alter) noexcept override; + ~ModifySpace() noexcept override; }; /** Amend the definition of the new space. */ void -ModifySpace::alter_def(struct alter_space *alter) +ModifySpace::alter_def(struct alter_space *alter) noexcept { /* * Use the old dictionary for the new space, because @@ -1249,7 +1245,7 @@ ModifySpace::alter_def(struct alter_space *alter) } void -ModifySpace::alter(struct alter_space *alter) +ModifySpace::alter(struct alter_space *alter) noexcept { /* * Move new names into an old dictionary, which already is @@ -1260,12 +1256,12 @@ ModifySpace::alter(struct alter_space *alter) } void -ModifySpace::rollback(struct alter_space *alter) +ModifySpace::rollback(struct alter_space *alter) noexcept { tuple_dictionary_swap(alter->new_space->def->dict, new_dict); } -ModifySpace::~ModifySpace() +ModifySpace::~ModifySpace() noexcept { if (new_dict != NULL) tuple_dictionary_unref(new_dict); @@ -1281,9 +1277,9 @@ public: DropIndex(struct alter_space *alter, struct index *index) :AlterSpaceOp(alter), old_index(index) {} struct index *old_index; - virtual void alter_def(struct alter_space *alter); - virtual void prepare(struct alter_space *alter); - virtual void commit(struct alter_space *alter, int64_t lsn); + void alter_def(struct alter_space *alter) noexcept override; + void prepare(struct alter_space *alter) override; + void commit(struct alter_space *alter, int64_t lsn) noexcept override; }; /* @@ -1291,7 +1287,7 @@ public: * the new index from it. */ void -DropIndex::alter_def(struct alter_space * /* alter */) +DropIndex::alter_def(struct alter_space * /* alter */) noexcept { rlist_del_entry(old_index->def, link); } @@ -1305,7 +1301,7 @@ DropIndex::prepare(struct alter_space *alter) } void -DropIndex::commit(struct alter_space *alter, int64_t signature) +DropIndex::commit(struct alter_space *alter, int64_t signature) noexcept { (void)alter; index_commit_drop(old_index, signature); @@ -1323,18 +1319,18 @@ public: :AlterSpaceOp(alter), iid(iid_arg) {} /** id of the index on the move. */ uint32_t iid; - virtual void alter(struct alter_space *alter); - virtual void rollback(struct alter_space *alter); + void alter(struct alter_space *alter) noexcept override; + void rollback(struct alter_space *alter) noexcept override; }; void -MoveIndex::alter(struct alter_space *alter) +MoveIndex::alter(struct alter_space *alter) noexcept { space_swap_index(alter->old_space, alter->new_space, iid, iid); } void -MoveIndex::rollback(struct alter_space *alter) +MoveIndex::rollback(struct alter_space *alter) noexcept { space_swap_index(alter->old_space, alter->new_space, iid, iid); } @@ -1365,23 +1361,23 @@ public: struct index *old_index; struct index *new_index; struct index_def *new_index_def; - virtual void alter_def(struct alter_space *alter); - virtual void alter(struct alter_space *alter); - virtual void commit(struct alter_space *alter, int64_t lsn); - virtual void rollback(struct alter_space *alter); - virtual ~ModifyIndex(); + void alter_def(struct alter_space *alter) noexcept override; + void alter(struct alter_space *alter) noexcept override; + void commit(struct alter_space *alter, int64_t lsn) noexcept override; + void rollback(struct alter_space *alter) noexcept override; + ~ModifyIndex() noexcept override; }; /** Update the definition of the new space */ void -ModifyIndex::alter_def(struct alter_space *alter) +ModifyIndex::alter_def(struct alter_space *alter) noexcept { rlist_del_entry(old_index->def, link); index_def_list_add(&alter->key_list, new_index_def); } void -ModifyIndex::alter(struct alter_space *alter) +ModifyIndex::alter(struct alter_space *alter) noexcept { new_index = space_index(alter->new_space, new_index_def->iid); assert(old_index->def->iid == new_index->def->iid); @@ -1397,14 +1393,14 @@ ModifyIndex::alter(struct alter_space *alter) } void -ModifyIndex::commit(struct alter_space *alter, int64_t signature) +ModifyIndex::commit(struct alter_space *alter, int64_t signature) noexcept { (void)alter; index_commit_modify(new_index, signature); } void -ModifyIndex::rollback(struct alter_space *alter) +ModifyIndex::rollback(struct alter_space *alter) noexcept { /* * Restore indexes. @@ -1416,7 +1412,7 @@ ModifyIndex::rollback(struct alter_space *alter) index_update_def(old_index); } -ModifyIndex::~ModifyIndex() +ModifyIndex::~ModifyIndex() noexcept { index_def_delete(new_index_def); } @@ -1432,15 +1428,15 @@ public: CreateIndex(struct alter_space *alter, struct index_def *def) :AlterSpaceOp(alter), new_index(NULL), new_index_def(def) {} - virtual void alter_def(struct alter_space *alter); - virtual void prepare(struct alter_space *alter); - virtual void commit(struct alter_space *alter, int64_t lsn); - virtual ~CreateIndex(); + void alter_def(struct alter_space *alter) noexcept override; + void prepare(struct alter_space *alter) override; + void commit(struct alter_space *alter, int64_t lsn) noexcept override; + ~CreateIndex() noexcept override; }; /** Add definition of the new key to the new space def. */ void -CreateIndex::alter_def(struct alter_space *alter) +CreateIndex::alter_def(struct alter_space *alter) noexcept { index_def_list_add(&alter->key_list, new_index_def); } @@ -1480,7 +1476,7 @@ CreateIndex::prepare(struct alter_space *alter) } void -CreateIndex::commit(struct alter_space *alter, int64_t signature) +CreateIndex::commit(struct alter_space *alter, int64_t signature) noexcept { (void) alter; assert(new_index != NULL); @@ -1488,7 +1484,7 @@ CreateIndex::commit(struct alter_space *alter, int64_t signature) new_index = NULL; } -CreateIndex::~CreateIndex() +CreateIndex::~CreateIndex() noexcept { if (new_index != NULL) index_abort_create(new_index); @@ -1521,15 +1517,15 @@ public: struct index_def *new_index_def; /** Old index index_def. */ struct index_def *old_index_def; - virtual void alter_def(struct alter_space *alter); - virtual void prepare(struct alter_space *alter); - virtual void commit(struct alter_space *alter, int64_t signature); - virtual ~RebuildIndex(); + void alter_def(struct alter_space *alter) noexcept override; + void prepare(struct alter_space *alter) override; + void commit(struct alter_space *alter, int64_t signature) noexcept override; + ~RebuildIndex() noexcept override; }; /** Add definition of the new key to the new space def. */ void -RebuildIndex::alter_def(struct alter_space *alter) +RebuildIndex::alter_def(struct alter_space *alter) noexcept { rlist_del_entry(old_index_def, link); index_def_list_add(&alter->key_list, new_index_def); @@ -1545,7 +1541,7 @@ RebuildIndex::prepare(struct alter_space *alter) } void -RebuildIndex::commit(struct alter_space *alter, int64_t signature) +RebuildIndex::commit(struct alter_space *alter, int64_t signature) noexcept { struct index *old_index = space_index(alter->old_space, old_index_def->iid); @@ -1556,7 +1552,7 @@ RebuildIndex::commit(struct alter_space *alter, int64_t signature) new_index = NULL; } -RebuildIndex::~RebuildIndex() +RebuildIndex::~RebuildIndex() noexcept { if (new_index != NULL) index_abort_create(new_index); @@ -1600,9 +1596,10 @@ public: TruncateIndex(struct alter_space *alter, uint32_t iid) : AlterSpaceOp(alter), iid(iid), old_index(NULL), new_index(NULL) {} - virtual void prepare(struct alter_space *alter); - virtual void commit(struct alter_space *alter, int64_t signature); - virtual ~TruncateIndex(); + void prepare(struct alter_space *alter) override; + void commit(struct alter_space *alter, + int64_t signature) noexcept override; + ~TruncateIndex() noexcept override; }; void @@ -1632,7 +1629,7 @@ TruncateIndex::prepare(struct alter_space *alter) } void -TruncateIndex::commit(struct alter_space *alter, int64_t signature) +TruncateIndex::commit(struct alter_space *alter, int64_t signature) noexcept { (void)alter; index_commit_drop(old_index, signature); @@ -1640,7 +1637,7 @@ TruncateIndex::commit(struct alter_space *alter, int64_t signature) new_index = NULL; } -TruncateIndex::~TruncateIndex() +TruncateIndex::~TruncateIndex() noexcept { if (new_index == NULL) return; @@ -1657,11 +1654,11 @@ class UpdateSchemaVersion: public AlterSpaceOp public: UpdateSchemaVersion(struct alter_space * alter) :AlterSpaceOp(alter) {} - virtual void alter(struct alter_space *alter); + void alter(struct alter_space *alter) noexcept override; }; void -UpdateSchemaVersion::alter(struct alter_space *alter) +UpdateSchemaVersion::alter(struct alter_space *alter) noexcept { (void)alter; ++schema_version; @@ -1684,10 +1681,10 @@ public: RebuildCkConstraints(struct alter_space *alter) : AlterSpaceOp(alter), ck_constraint(RLIST_HEAD_INITIALIZER(ck_constraint)) {} struct rlist ck_constraint; - virtual void prepare(struct alter_space *alter); - virtual void alter(struct alter_space *alter); - virtual void rollback(struct alter_space *alter); - virtual ~RebuildCkConstraints(); + void prepare(struct alter_space *alter) override; + void alter(struct alter_space *alter) noexcept override; + void rollback(struct alter_space *alter) noexcept override; + ~RebuildCkConstraints() noexcept override; }; void @@ -1716,18 +1713,18 @@ RebuildCkConstraints::space_swap_ck_constraint(struct space *old_space, } void -RebuildCkConstraints::alter(struct alter_space *alter) +RebuildCkConstraints::alter(struct alter_space *alter) noexcept { space_swap_ck_constraint(alter->old_space, alter->new_space); } void -RebuildCkConstraints::rollback(struct alter_space *alter) +RebuildCkConstraints::rollback(struct alter_space *alter) noexcept { space_swap_ck_constraint(alter->new_space, alter->old_space); } -RebuildCkConstraints::~RebuildCkConstraints() +RebuildCkConstraints::~RebuildCkConstraints() noexcept { struct ck_constraint *old_ck_constraint, *tmp; rlist_foreach_entry_safe(old_ck_constraint, &ck_constraint, link, tmp) { @@ -1754,8 +1751,8 @@ class MoveCkConstraints: public AlterSpaceOp struct space *new_space); public: MoveCkConstraints(struct alter_space *alter) : AlterSpaceOp(alter) {} - virtual void alter(struct alter_space *alter); - virtual void rollback(struct alter_space *alter); + void alter(struct alter_space *alter) noexcept override; + void rollback(struct alter_space *alter) noexcept override; }; void @@ -1769,13 +1766,13 @@ MoveCkConstraints::space_swap_ck_constraint(struct space *old_space, } void -MoveCkConstraints::alter(struct alter_space *alter) +MoveCkConstraints::alter(struct alter_space *alter) noexcept { space_swap_ck_constraint(alter->old_space, alter->new_space); } void -MoveCkConstraints::rollback(struct alter_space *alter) +MoveCkConstraints::rollback(struct alter_space *alter) noexcept { space_swap_ck_constraint(alter->new_space, alter->old_space); } @@ -1834,11 +1831,12 @@ public: if (new_id == NULL) diag_raise(); } - virtual void prepare(struct alter_space *alter); - virtual void alter(struct alter_space *alter); - virtual void rollback(struct alter_space *alter); - virtual void commit(struct alter_space *alter, int64_t signature); - virtual ~CreateConstraintID(); + void prepare(struct alter_space *alter) override; + void alter(struct alter_space *alter) noexcept override; + void rollback(struct alter_space *alter) noexcept override; + void commit(struct alter_space *alter, + int64_t signature) noexcept override; + ~CreateConstraintID() noexcept override; }; void @@ -1850,7 +1848,7 @@ CreateConstraintID::prepare(struct alter_space *alter) } void -CreateConstraintID::alter(struct alter_space *alter) +CreateConstraintID::alter(struct alter_space *alter) noexcept { /* Alter() can't fail, so can't just throw an error. */ if (space_add_constraint_id(alter->old_space, new_id) != 0) @@ -1858,14 +1856,15 @@ CreateConstraintID::alter(struct alter_space *alter) } void -CreateConstraintID::rollback(struct alter_space *alter) +CreateConstraintID::rollback(struct alter_space *alter) noexcept { space_delete_constraint_id(alter->new_space, new_id->name); new_id = NULL; } void -CreateConstraintID::commit(struct alter_space *alter, int64_t signature) +CreateConstraintID::commit(struct alter_space *alter, + int64_t signature) noexcept { (void) alter; (void) signature; @@ -1876,7 +1875,7 @@ CreateConstraintID::commit(struct alter_space *alter, int64_t signature) new_id = NULL; } -CreateConstraintID::~CreateConstraintID() +CreateConstraintID::~CreateConstraintID() noexcept { if (new_id != NULL) constraint_id_delete(new_id); @@ -1891,19 +1890,20 @@ public: DropConstraintID(struct alter_space *alter, const char *name) :AlterSpaceOp(alter), old_id(NULL), name(name) {} - virtual void alter(struct alter_space *alter); - virtual void commit(struct alter_space *alter , int64_t signature); - virtual void rollback(struct alter_space *alter); + void alter(struct alter_space *alter) noexcept override; + void commit(struct alter_space *alter, + int64_t signature) noexcept override; + void rollback(struct alter_space *alter) noexcept override; }; void -DropConstraintID::alter(struct alter_space *alter) +DropConstraintID::alter(struct alter_space *alter) noexcept { old_id = space_pop_constraint_id(alter->old_space, name); } void -DropConstraintID::commit(struct alter_space *alter, int64_t signature) +DropConstraintID::commit(struct alter_space *alter, int64_t signature) noexcept { (void) alter; (void) signature; @@ -1911,7 +1911,7 @@ DropConstraintID::commit(struct alter_space *alter, int64_t signature) } void -DropConstraintID::rollback(struct alter_space *alter) +DropConstraintID::rollback(struct alter_space *alter) noexcept { if (space_add_constraint_id(alter->new_space, old_id) != 0) { panic("Can't recover after constraint drop rollback (out of " -- 2.7.4