From: Serge Petrenko via Tarantool-patches <tarantool-patches@dev.tarantool.org> To: v.shpilevoy@tarantool.org, gorcunov@gmail.com Cc: tarantool-patches@dev.tarantool.org Subject: [Tarantool-patches] [PATCH 6/7] box: introduce `box.ctl.demote` Date: Thu, 10 Jun 2021 16:32:56 +0300 [thread overview] Message-ID: <5fc6e8a222fc1a05ad45d90fb306fcfe4423d3f1.1623331925.git.sergepetrenko@tarantool.org> (raw) In-Reply-To: <cover.1623331925.git.sergepetrenko@tarantool.org> Introduce a new journal entry, DEMOTE. The entry has the same meaning as PROMOTE, with the only difference that it clears limbo ownership instead of transferring it to the issuer. Introduce `box.ctl.demote`, which works exactly like `box.ctl.promote`, but results in writing DEMOTE instead of PROMOTE. A new request was necessary instead of simply writing PROMOTE(origin_id = 0), because origin_id is deduced from row.replica_id, which cannot be 0 for replicated rows (it's always equal to instance_id of the row originator). Closes #6034 @TarantoolBod document Title: box.ctl.demote `box.ctl.demote()` is a new function, which works exactly like `box.ctl.promote()`, with one exception that it results in the instance writing DEMOTE request to WAL instead of a PROMOTE request. A DEMOTE request (DEMOTE = 32) copies PROMOTE behaviour (it clears the limbo as well), but clears limbo ownership instead of assigning it to a new instance. --- src/box/box.cc | 28 +++++++++++--- src/box/box.h | 3 ++ src/box/iproto_constants.h | 10 +++-- src/box/lua/ctl.c | 9 +++++ src/box/txn_limbo.c | 37 ++++++++++++++++--- src/box/txn_limbo.h | 7 ++++ test/replication/election_basic.result | 3 ++ test/replication/election_basic.test.lua | 1 + test/replication/election_qsync.result | 3 ++ test/replication/election_qsync.test.lua | 1 + .../gh-5140-qsync-casc-rollback.result | 3 ++ .../gh-5140-qsync-casc-rollback.test.lua | 1 + .../gh-5144-qsync-dup-confirm.result | 3 ++ .../gh-5144-qsync-dup-confirm.test.lua | 1 + .../gh-5163-qsync-restart-crash.result | 3 ++ .../gh-5163-qsync-restart-crash.test.lua | 1 + .../gh-5167-qsync-rollback-snap.result | 3 ++ .../gh-5167-qsync-rollback-snap.test.lua | 1 + .../gh-5195-qsync-replica-write.result | 3 ++ .../gh-5195-qsync-replica-write.test.lua | 1 + .../gh-5213-qsync-applier-order-3.result | 3 ++ .../gh-5213-qsync-applier-order-3.test.lua | 1 + .../gh-5213-qsync-applier-order.result | 3 ++ .../gh-5213-qsync-applier-order.test.lua | 1 + .../replication/gh-5288-qsync-recovery.result | 3 ++ .../gh-5288-qsync-recovery.test.lua | 1 + .../gh-5298-qsync-recovery-snap.result | 3 ++ .../gh-5298-qsync-recovery-snap.test.lua | 1 + .../gh-5426-election-on-off.result | 3 ++ .../gh-5426-election-on-off.test.lua | 1 + .../gh-5433-election-restart-recovery.result | 3 ++ ...gh-5433-election-restart-recovery.test.lua | 1 + .../gh-5446-qsync-eval-quorum.result | 4 ++ .../gh-5446-qsync-eval-quorum.test.lua | 2 + .../gh-5506-election-on-off.result | 3 ++ .../gh-5506-election-on-off.test.lua | 1 + .../gh-5566-final-join-synchro.result | 3 ++ .../gh-5566-final-join-synchro.test.lua | 1 + .../gh-5874-qsync-txn-recovery.result | 3 ++ .../gh-5874-qsync-txn-recovery.test.lua | 1 + .../gh-6032-promote-wal-write.result | 3 ++ .../gh-6032-promote-wal-write.test.lua | 1 + .../gh-6057-qsync-confirm-async-no-wal.result | 3 ++ ...h-6057-qsync-confirm-async-no-wal.test.lua | 1 + test/replication/hang_on_synchro_fail.result | 3 ++ .../replication/hang_on_synchro_fail.test.lua | 1 + test/replication/qsync_advanced.result | 3 ++ test/replication/qsync_advanced.test.lua | 1 + test/replication/qsync_basic.result | 3 ++ test/replication/qsync_basic.test.lua | 1 + test/replication/qsync_errinj.result | 3 ++ test/replication/qsync_errinj.test.lua | 1 + test/replication/qsync_snapshots.result | 3 ++ test/replication/qsync_snapshots.test.lua | 1 + test/replication/qsync_with_anon.result | 3 ++ test/replication/qsync_with_anon.test.lua | 1 + 56 files changed, 183 insertions(+), 13 deletions(-) diff --git a/src/box/box.cc b/src/box/box.cc index b9f3fab32..d3908b4cd 100644 --- a/src/box/box.cc +++ b/src/box/box.cc @@ -1503,8 +1503,8 @@ box_wait_quorum(uint32_t lead_id, int64_t target_lsn, int quorum, return 0; } -int -box_promote(void) +static int +box_clear_synchro_queue(bool demote) { /* A guard to block multiple simultaneous function invocations. */ static bool in_promote = false; @@ -1665,10 +1665,16 @@ box_promote(void) promote: /* We cannot possibly get here in a volatile state. */ assert(box_raft()->volatile_term == box_raft()->term); - txn_limbo_write_promote(&txn_limbo, wait_lsn, - box_raft()->term); + if (demote) { + txn_limbo_write_demote(&txn_limbo, wait_lsn, + box_raft()->term); + } else { + txn_limbo_write_promote(&txn_limbo, wait_lsn, + box_raft()->term); + } + uint16_t type = demote ? IPROTO_DEMOTE : IPROTO_PROMOTE; struct synchro_request req = { - .type = IPROTO_PROMOTE, + .type = type, .replica_id = former_leader_id, .origin_id = instance_id, .lsn = wait_lsn, @@ -1681,6 +1687,18 @@ promote: return rc; } +int +box_promote(void) +{ + return box_clear_synchro_queue(false); +} + +int +box_demote(void) +{ + return box_clear_synchro_queue(true); +} + void box_listen(void) { diff --git a/src/box/box.h b/src/box/box.h index 04bdd397d..a05f72bb6 100644 --- a/src/box/box.h +++ b/src/box/box.h @@ -276,6 +276,9 @@ typedef struct tuple box_tuple_t; int box_promote(void); +int +box_demote(void); + /* box_select is private and used only by FFI */ API_EXPORT int box_select(uint32_t space_id, uint32_t index_id, diff --git a/src/box/iproto_constants.h b/src/box/iproto_constants.h index 7362ddaf1..92d87016a 100644 --- a/src/box/iproto_constants.h +++ b/src/box/iproto_constants.h @@ -240,6 +240,8 @@ enum iproto_type { IPROTO_RAFT = 30, /** PROMOTE request. */ IPROTO_PROMOTE = 31, + /** DEMOTE request. */ + IPROTO_DEMOTE = 32, /** A confirmation message for synchronous transactions. */ IPROTO_CONFIRM = 40, @@ -309,6 +311,8 @@ iproto_type_name(uint16_t type) return "RAFT"; case IPROTO_PROMOTE: return "PROMOTE"; + case IPROTO_DEMOTE: + return "DEMOTE"; case IPROTO_CONFIRM: return "CONFIRM"; case IPROTO_ROLLBACK: @@ -363,14 +367,14 @@ static inline bool iproto_type_is_synchro_request(uint16_t type) { return type == IPROTO_CONFIRM || type == IPROTO_ROLLBACK || - type == IPROTO_PROMOTE; + type == IPROTO_PROMOTE || type == IPROTO_DEMOTE; } -/** PROMOTE entry (synchronous replication and leader elections). */ +/** PROMOTE/DEMOTE entry (synchronous replication and leader elections). */ static inline bool iproto_type_is_promote_request(uint32_t type) { - return type == IPROTO_PROMOTE; + return type == IPROTO_PROMOTE || type == IPROTO_DEMOTE; } static inline bool diff --git a/src/box/lua/ctl.c b/src/box/lua/ctl.c index 368b9ab60..a613c4111 100644 --- a/src/box/lua/ctl.c +++ b/src/box/lua/ctl.c @@ -89,6 +89,14 @@ lbox_ctl_promote(struct lua_State *L) return 0; } +static int +lbox_ctl_demote(struct lua_State *L) +{ + if (box_demote() != 0) + return luaT_error(L); + return 0; +} + static int lbox_ctl_is_recovery_finished(struct lua_State *L) { @@ -127,6 +135,7 @@ static const struct luaL_Reg lbox_ctl_lib[] = { {"promote", lbox_ctl_promote}, /* An old alias. */ {"clear_synchro_queue", lbox_ctl_promote}, + {"demote", lbox_ctl_demote}, {"is_recovery_finished", lbox_ctl_is_recovery_finished}, {"set_on_shutdown_timeout", lbox_ctl_set_on_shutdown_timeout}, {NULL, NULL} diff --git a/src/box/txn_limbo.c b/src/box/txn_limbo.c index 40c4a41bb..f51c32030 100644 --- a/src/box/txn_limbo.c +++ b/src/box/txn_limbo.c @@ -507,6 +507,29 @@ txn_limbo_read_promote(struct txn_limbo *limbo, uint32_t replica_id, limbo->confirmed_lsn = 0; } +void +txn_limbo_write_demote(struct txn_limbo *limbo, int64_t lsn, uint64_t term) +{ + limbo->confirmed_lsn = lsn; + limbo->is_in_rollback = true; + struct txn_limbo_entry *e = txn_limbo_last_synchro_entry(limbo); + assert(e == NULL || e->lsn <= lsn); + (void)e; + txn_limbo_write_synchro(limbo, IPROTO_DEMOTE, lsn, term); + limbo->is_in_rollback = false; +} + +/** + * Process a DEMOTE request, which's like PROMOTE, but clears the limbo + * ownership. + * @sa txn_limbo_read_promote. + */ +static void +txn_limbo_read_demote(struct txn_limbo *limbo, int64_t lsn) +{ + return txn_limbo_read_promote(limbo, REPLICA_ID_NIL, lsn); +} + void txn_limbo_ack(struct txn_limbo *limbo, uint32_t replica_id, int64_t lsn) { @@ -659,12 +682,13 @@ txn_limbo_process(struct txn_limbo *limbo, const struct synchro_request *req) if (term > limbo->promote_greatest_term) { limbo->promote_greatest_term = term; - } else if (req->type == IPROTO_PROMOTE && + } else if (iproto_type_is_promote_request(req->type) && limbo->promote_greatest_term > 1) { /* PROMOTE for outdated term. Ignore. */ - say_info("RAFT: ignoring PROMOTE request from instance " + say_info("RAFT: ignoring %s request from instance " "id %"PRIu32" for term %"PRIu64". Greatest term seen " - "before (%"PRIu64") is bigger.", origin, term, + "before (%"PRIu64") is bigger.", + iproto_type_name(req->type), origin, term, limbo->promote_greatest_term); return; } @@ -675,7 +699,7 @@ txn_limbo_process(struct txn_limbo *limbo, const struct synchro_request *req) * The limbo was empty on the instance issuing the request. * This means this instance must empty its limbo as well. */ - assert(lsn == 0 && req->type == IPROTO_PROMOTE); + assert(lsn == 0 && iproto_type_is_promote_request(req->type)); } else if (req->replica_id != limbo->owner_id) { /* * Ignore CONFIRM/ROLLBACK messages for a foreign master. @@ -683,7 +707,7 @@ txn_limbo_process(struct txn_limbo *limbo, const struct synchro_request *req) * data from an old leader, who has just started and written * confirm right on synchronous transaction recovery. */ - if (req->type != IPROTO_PROMOTE) + if (!iproto_type_is_promote_request(req->type)) return; /* * Promote has a bigger term, and tries to steal the limbo. It @@ -703,6 +727,9 @@ txn_limbo_process(struct txn_limbo *limbo, const struct synchro_request *req) case IPROTO_PROMOTE: txn_limbo_read_promote(limbo, req->origin_id, lsn); break; + case IPROTO_DEMOTE: + txn_limbo_read_demote(limbo, lsn); + break; default: unreachable(); } diff --git a/src/box/txn_limbo.h b/src/box/txn_limbo.h index 84a19bb40..c876c31fa 100644 --- a/src/box/txn_limbo.h +++ b/src/box/txn_limbo.h @@ -324,6 +324,13 @@ txn_limbo_checkpoint(struct txn_limbo *limbo, struct synchro_request *req); void txn_limbo_write_promote(struct txn_limbo *limbo, int64_t lsn, uint64_t term); +/** + * Write a DEMOTE request. + * It has the same effect as PROMOTE and additionally clears limbo ownership. + */ +void +txn_limbo_write_demote(struct txn_limbo *limbo, int64_t lsn, uint64_t term); + /** * Update qsync parameters dynamically. */ diff --git a/test/replication/election_basic.result b/test/replication/election_basic.result index d5320b3ff..a62d32deb 100644 --- a/test/replication/election_basic.result +++ b/test/replication/election_basic.result @@ -114,6 +114,9 @@ box.cfg{ } | --- | ... +box.ctl.demote() + | --- + | ... -- -- See if bootstrap with election enabled works. diff --git a/test/replication/election_basic.test.lua b/test/replication/election_basic.test.lua index 821f73cea..2143a6000 100644 --- a/test/replication/election_basic.test.lua +++ b/test/replication/election_basic.test.lua @@ -43,6 +43,7 @@ box.cfg{ election_mode = 'off', \ election_timeout = old_election_timeout \ } +box.ctl.demote() -- -- See if bootstrap with election enabled works. diff --git a/test/replication/election_qsync.result b/test/replication/election_qsync.result index c06400b38..2402c8578 100644 --- a/test/replication/election_qsync.result +++ b/test/replication/election_qsync.result @@ -165,6 +165,9 @@ box.cfg{ } | --- | ... +box.ctl.demote() + | --- + | ... box.schema.user.revoke('guest', 'super') | --- | ... diff --git a/test/replication/election_qsync.test.lua b/test/replication/election_qsync.test.lua index ea6fc4a61..e1aca8351 100644 --- a/test/replication/election_qsync.test.lua +++ b/test/replication/election_qsync.test.lua @@ -84,4 +84,5 @@ box.cfg{ replication = old_replication, \ replication_synchro_timeout = old_replication_synchro_timeout, \ } +box.ctl.demote() box.schema.user.revoke('guest', 'super') diff --git a/test/replication/gh-5140-qsync-casc-rollback.result b/test/replication/gh-5140-qsync-casc-rollback.result index 0eec3f10a..d3208e1a4 100644 --- a/test/replication/gh-5140-qsync-casc-rollback.result +++ b/test/replication/gh-5140-qsync-casc-rollback.result @@ -225,3 +225,6 @@ test_run:cmd('delete server replica') box.schema.user.revoke('guest', 'super') | --- | ... +box.ctl.demote() + | --- + | ... diff --git a/test/replication/gh-5140-qsync-casc-rollback.test.lua b/test/replication/gh-5140-qsync-casc-rollback.test.lua index d45390aa6..96ddfd260 100644 --- a/test/replication/gh-5140-qsync-casc-rollback.test.lua +++ b/test/replication/gh-5140-qsync-casc-rollback.test.lua @@ -104,3 +104,4 @@ test_run:cmd('stop server replica') test_run:cmd('delete server replica') box.schema.user.revoke('guest', 'super') +box.ctl.demote() diff --git a/test/replication/gh-5144-qsync-dup-confirm.result b/test/replication/gh-5144-qsync-dup-confirm.result index 01c7501f1..217e44412 100644 --- a/test/replication/gh-5144-qsync-dup-confirm.result +++ b/test/replication/gh-5144-qsync-dup-confirm.result @@ -151,6 +151,9 @@ test_run:cmd('delete server replica2') | - true | ... +box.ctl.demote() + | --- + | ... box.schema.user.revoke('guest', 'super') | --- | ... diff --git a/test/replication/gh-5144-qsync-dup-confirm.test.lua b/test/replication/gh-5144-qsync-dup-confirm.test.lua index 9a295192a..1d6af2c62 100644 --- a/test/replication/gh-5144-qsync-dup-confirm.test.lua +++ b/test/replication/gh-5144-qsync-dup-confirm.test.lua @@ -70,4 +70,5 @@ test_run:cmd('delete server replica1') test_run:cmd('stop server replica2') test_run:cmd('delete server replica2') +box.ctl.demote() box.schema.user.revoke('guest', 'super') diff --git a/test/replication/gh-5163-qsync-restart-crash.result b/test/replication/gh-5163-qsync-restart-crash.result index 8c9d43a9b..1b4d3d9b5 100644 --- a/test/replication/gh-5163-qsync-restart-crash.result +++ b/test/replication/gh-5163-qsync-restart-crash.result @@ -33,3 +33,6 @@ box.space.sync:select{} box.space.sync:drop() | --- | ... +box.ctl.demote() + | --- + | ... diff --git a/test/replication/gh-5163-qsync-restart-crash.test.lua b/test/replication/gh-5163-qsync-restart-crash.test.lua index a0c2533c6..c8d54aad2 100644 --- a/test/replication/gh-5163-qsync-restart-crash.test.lua +++ b/test/replication/gh-5163-qsync-restart-crash.test.lua @@ -13,3 +13,4 @@ box.space.sync:replace{1} test_run:cmd('restart server default') box.space.sync:select{} box.space.sync:drop() +box.ctl.demote() diff --git a/test/replication/gh-5167-qsync-rollback-snap.result b/test/replication/gh-5167-qsync-rollback-snap.result index ddb3212ad..13166720f 100644 --- a/test/replication/gh-5167-qsync-rollback-snap.result +++ b/test/replication/gh-5167-qsync-rollback-snap.result @@ -166,3 +166,6 @@ box.cfg{ } | --- | ... +box.ctl.demote() + | --- + | ... diff --git a/test/replication/gh-5167-qsync-rollback-snap.test.lua b/test/replication/gh-5167-qsync-rollback-snap.test.lua index 1590a515a..1a2a31b7c 100644 --- a/test/replication/gh-5167-qsync-rollback-snap.test.lua +++ b/test/replication/gh-5167-qsync-rollback-snap.test.lua @@ -66,3 +66,4 @@ box.cfg{ replication_synchro_quorum = orig_synchro_quorum, \ replication_synchro_timeout = orig_synchro_timeout, \ } +box.ctl.demote() diff --git a/test/replication/gh-5195-qsync-replica-write.result b/test/replication/gh-5195-qsync-replica-write.result index fcf96cd1a..99ec9663e 100644 --- a/test/replication/gh-5195-qsync-replica-write.result +++ b/test/replication/gh-5195-qsync-replica-write.result @@ -160,3 +160,6 @@ box.cfg{ } | --- | ... +box.ctl.demote() + | --- + | ... diff --git a/test/replication/gh-5195-qsync-replica-write.test.lua b/test/replication/gh-5195-qsync-replica-write.test.lua index 751ceee69..8b5d78357 100644 --- a/test/replication/gh-5195-qsync-replica-write.test.lua +++ b/test/replication/gh-5195-qsync-replica-write.test.lua @@ -67,3 +67,4 @@ box.cfg{ replication_synchro_quorum = old_synchro_quorum, \ replication_synchro_timeout = old_synchro_timeout, \ } +box.ctl.demote() diff --git a/test/replication/gh-5213-qsync-applier-order-3.result b/test/replication/gh-5213-qsync-applier-order-3.result index 90608dcdc..e788eec77 100644 --- a/test/replication/gh-5213-qsync-applier-order-3.result +++ b/test/replication/gh-5213-qsync-applier-order-3.result @@ -267,3 +267,6 @@ box.cfg{ } | --- | ... +box.ctl.demote() + | --- + | ... diff --git a/test/replication/gh-5213-qsync-applier-order-3.test.lua b/test/replication/gh-5213-qsync-applier-order-3.test.lua index 669ab3677..304656de0 100644 --- a/test/replication/gh-5213-qsync-applier-order-3.test.lua +++ b/test/replication/gh-5213-qsync-applier-order-3.test.lua @@ -125,3 +125,4 @@ box.cfg{ replication_synchro_quorum = old_synchro_quorum, \ replication_synchro_timeout = old_synchro_timeout, \ } +box.ctl.demote() diff --git a/test/replication/gh-5213-qsync-applier-order.result b/test/replication/gh-5213-qsync-applier-order.result index 3e1f2871b..ba6cdab06 100644 --- a/test/replication/gh-5213-qsync-applier-order.result +++ b/test/replication/gh-5213-qsync-applier-order.result @@ -303,3 +303,6 @@ box.cfg{ } | --- | ... +box.ctl.demote() + | --- + | ... diff --git a/test/replication/gh-5213-qsync-applier-order.test.lua b/test/replication/gh-5213-qsync-applier-order.test.lua index 010c08ca7..39b1912e8 100644 --- a/test/replication/gh-5213-qsync-applier-order.test.lua +++ b/test/replication/gh-5213-qsync-applier-order.test.lua @@ -121,3 +121,4 @@ box.cfg{ replication_synchro_quorum = old_synchro_quorum, \ replication_synchro_timeout = old_synchro_timeout, \ } +box.ctl.demote() diff --git a/test/replication/gh-5288-qsync-recovery.result b/test/replication/gh-5288-qsync-recovery.result index 42662cd38..704b71d93 100644 --- a/test/replication/gh-5288-qsync-recovery.result +++ b/test/replication/gh-5288-qsync-recovery.result @@ -28,3 +28,6 @@ test_run:cmd('restart server default') box.space.sync:drop() | --- | ... +box.ctl.demote() + | --- + | ... diff --git a/test/replication/gh-5288-qsync-recovery.test.lua b/test/replication/gh-5288-qsync-recovery.test.lua index 24727d59e..2455f7278 100644 --- a/test/replication/gh-5288-qsync-recovery.test.lua +++ b/test/replication/gh-5288-qsync-recovery.test.lua @@ -10,3 +10,4 @@ s:insert{1} box.snapshot() test_run:cmd('restart server default') box.space.sync:drop() +box.ctl.demote() diff --git a/test/replication/gh-5298-qsync-recovery-snap.result b/test/replication/gh-5298-qsync-recovery-snap.result index ac6ccbc36..0883fe5f5 100644 --- a/test/replication/gh-5298-qsync-recovery-snap.result +++ b/test/replication/gh-5298-qsync-recovery-snap.result @@ -101,3 +101,6 @@ box.space.sync:drop() box.space.loc:drop() | --- | ... +box.ctl.demote() + | --- + | ... diff --git a/test/replication/gh-5298-qsync-recovery-snap.test.lua b/test/replication/gh-5298-qsync-recovery-snap.test.lua index 30f975c6c..084cde963 100644 --- a/test/replication/gh-5298-qsync-recovery-snap.test.lua +++ b/test/replication/gh-5298-qsync-recovery-snap.test.lua @@ -47,3 +47,4 @@ box.cfg{ } box.space.sync:drop() box.space.loc:drop() +box.ctl.demote() diff --git a/test/replication/gh-5426-election-on-off.result b/test/replication/gh-5426-election-on-off.result index 7444ef7f2..2bdc17ec6 100644 --- a/test/replication/gh-5426-election-on-off.result +++ b/test/replication/gh-5426-election-on-off.result @@ -168,6 +168,9 @@ box.cfg{ } | --- | ... +box.ctl.demote() + | --- + | ... box.schema.user.revoke('guest', 'super') | --- | ... diff --git a/test/replication/gh-5426-election-on-off.test.lua b/test/replication/gh-5426-election-on-off.test.lua index bdf06903b..6277e9ef2 100644 --- a/test/replication/gh-5426-election-on-off.test.lua +++ b/test/replication/gh-5426-election-on-off.test.lua @@ -69,4 +69,5 @@ box.cfg{ election_mode = old_election_mode, \ replication_timeout = old_replication_timeout, \ } +box.ctl.demote() box.schema.user.revoke('guest', 'super') diff --git a/test/replication/gh-5433-election-restart-recovery.result b/test/replication/gh-5433-election-restart-recovery.result index f8f32416e..ed63ff409 100644 --- a/test/replication/gh-5433-election-restart-recovery.result +++ b/test/replication/gh-5433-election-restart-recovery.result @@ -169,6 +169,9 @@ box.cfg{ } | --- | ... +box.ctl.demote() + | --- + | ... box.schema.user.revoke('guest', 'super') | --- | ... diff --git a/test/replication/gh-5433-election-restart-recovery.test.lua b/test/replication/gh-5433-election-restart-recovery.test.lua index 4aff000bf..ae1f42c4d 100644 --- a/test/replication/gh-5433-election-restart-recovery.test.lua +++ b/test/replication/gh-5433-election-restart-recovery.test.lua @@ -84,4 +84,5 @@ box.cfg{ election_mode = old_election_mode, \ replication_timeout = old_replication_timeout, \ } +box.ctl.demote() box.schema.user.revoke('guest', 'super') diff --git a/test/replication/gh-5446-qsync-eval-quorum.result b/test/replication/gh-5446-qsync-eval-quorum.result index fe9868651..1173128a7 100644 --- a/test/replication/gh-5446-qsync-eval-quorum.result +++ b/test/replication/gh-5446-qsync-eval-quorum.result @@ -346,3 +346,7 @@ box.cfg{ } | --- | ... +box.ctl.demote() + | --- + | ... + diff --git a/test/replication/gh-5446-qsync-eval-quorum.test.lua b/test/replication/gh-5446-qsync-eval-quorum.test.lua index d8fe6cccf..b969df836 100644 --- a/test/replication/gh-5446-qsync-eval-quorum.test.lua +++ b/test/replication/gh-5446-qsync-eval-quorum.test.lua @@ -136,3 +136,5 @@ box.cfg{ replication_synchro_quorum = old_synchro_quorum, \ replication_synchro_timeout = old_synchro_timeout, \ } +box.ctl.demote() + diff --git a/test/replication/gh-5506-election-on-off.result b/test/replication/gh-5506-election-on-off.result index b8abd7ecd..a7f2b6a9c 100644 --- a/test/replication/gh-5506-election-on-off.result +++ b/test/replication/gh-5506-election-on-off.result @@ -138,3 +138,6 @@ box.cfg{ } | --- | ... +box.ctl.demote() + | --- + | ... diff --git a/test/replication/gh-5506-election-on-off.test.lua b/test/replication/gh-5506-election-on-off.test.lua index 476b00ec0..f8915c333 100644 --- a/test/replication/gh-5506-election-on-off.test.lua +++ b/test/replication/gh-5506-election-on-off.test.lua @@ -66,3 +66,4 @@ box.cfg{ election_mode = old_election_mode, \ replication_timeout = old_replication_timeout, \ } +box.ctl.demote() diff --git a/test/replication/gh-5566-final-join-synchro.result b/test/replication/gh-5566-final-join-synchro.result index e43e03b1c..c5ae2f283 100644 --- a/test/replication/gh-5566-final-join-synchro.result +++ b/test/replication/gh-5566-final-join-synchro.result @@ -140,3 +140,6 @@ test_run:cleanup_cluster() box.schema.user.revoke('guest', 'replication') | --- | ... +box.ctl.demote() + | --- + | ... diff --git a/test/replication/gh-5566-final-join-synchro.test.lua b/test/replication/gh-5566-final-join-synchro.test.lua index 0f22a0321..25f411407 100644 --- a/test/replication/gh-5566-final-join-synchro.test.lua +++ b/test/replication/gh-5566-final-join-synchro.test.lua @@ -60,3 +60,4 @@ box.cfg{\ box.space.sync:drop() test_run:cleanup_cluster() box.schema.user.revoke('guest', 'replication') +box.ctl.demote() diff --git a/test/replication/gh-5874-qsync-txn-recovery.result b/test/replication/gh-5874-qsync-txn-recovery.result index 85eb89e04..01328a9e3 100644 --- a/test/replication/gh-5874-qsync-txn-recovery.result +++ b/test/replication/gh-5874-qsync-txn-recovery.result @@ -163,3 +163,6 @@ sync:drop() loc:drop() | --- | ... +box.ctl.demote() + | --- + | ... diff --git a/test/replication/gh-5874-qsync-txn-recovery.test.lua b/test/replication/gh-5874-qsync-txn-recovery.test.lua index cf9753851..6ddf164ac 100644 --- a/test/replication/gh-5874-qsync-txn-recovery.test.lua +++ b/test/replication/gh-5874-qsync-txn-recovery.test.lua @@ -83,3 +83,4 @@ loc:select() async:drop() sync:drop() loc:drop() +box.ctl.demote() diff --git a/test/replication/gh-6032-promote-wal-write.result b/test/replication/gh-6032-promote-wal-write.result index 246c7974f..03112fb8d 100644 --- a/test/replication/gh-6032-promote-wal-write.result +++ b/test/replication/gh-6032-promote-wal-write.result @@ -67,3 +67,6 @@ box.cfg{\ box.space.sync:drop() | --- | ... +box.ctl.demote() + | --- + | ... diff --git a/test/replication/gh-6032-promote-wal-write.test.lua b/test/replication/gh-6032-promote-wal-write.test.lua index 8c1859083..9a036a8b4 100644 --- a/test/replication/gh-6032-promote-wal-write.test.lua +++ b/test/replication/gh-6032-promote-wal-write.test.lua @@ -26,3 +26,4 @@ box.cfg{\ replication_synchro_timeout = replication_synchro_timeout,\ } box.space.sync:drop() +box.ctl.demote() diff --git a/test/replication/gh-6057-qsync-confirm-async-no-wal.result b/test/replication/gh-6057-qsync-confirm-async-no-wal.result index 4e4fc7576..e7beefb2a 100644 --- a/test/replication/gh-6057-qsync-confirm-async-no-wal.result +++ b/test/replication/gh-6057-qsync-confirm-async-no-wal.result @@ -165,3 +165,6 @@ box.cfg{ } | --- | ... +box.ctl.demote() + | --- + | ... diff --git a/test/replication/gh-6057-qsync-confirm-async-no-wal.test.lua b/test/replication/gh-6057-qsync-confirm-async-no-wal.test.lua index c2d9d290b..bb459ea02 100644 --- a/test/replication/gh-6057-qsync-confirm-async-no-wal.test.lua +++ b/test/replication/gh-6057-qsync-confirm-async-no-wal.test.lua @@ -88,3 +88,4 @@ box.cfg{ replication_synchro_quorum = old_synchro_quorum, \ replication_synchro_timeout = old_synchro_timeout, \ } +box.ctl.demote() diff --git a/test/replication/hang_on_synchro_fail.result b/test/replication/hang_on_synchro_fail.result index b73406368..dda15af20 100644 --- a/test/replication/hang_on_synchro_fail.result +++ b/test/replication/hang_on_synchro_fail.result @@ -130,4 +130,7 @@ box.space.sync:drop() box.schema.user.revoke('guest', 'replication') | --- | ... +box.ctl.demote() + | --- + | ... diff --git a/test/replication/hang_on_synchro_fail.test.lua b/test/replication/hang_on_synchro_fail.test.lua index 549ae17f6..f0d494eae 100644 --- a/test/replication/hang_on_synchro_fail.test.lua +++ b/test/replication/hang_on_synchro_fail.test.lua @@ -55,4 +55,5 @@ box.cfg{replication_synchro_quorum=old_synchro_quorum,\ replication_synchro_timeout=old_synchro_timeout} box.space.sync:drop() box.schema.user.revoke('guest', 'replication') +box.ctl.demote() diff --git a/test/replication/qsync_advanced.result b/test/replication/qsync_advanced.result index 509e5c2a7..72ac0c326 100644 --- a/test/replication/qsync_advanced.result +++ b/test/replication/qsync_advanced.result @@ -790,3 +790,6 @@ box.cfg{ } | --- | ... +box.ctl.demote() + | --- + | ... diff --git a/test/replication/qsync_advanced.test.lua b/test/replication/qsync_advanced.test.lua index 5bc54794b..37c285b8d 100644 --- a/test/replication/qsync_advanced.test.lua +++ b/test/replication/qsync_advanced.test.lua @@ -282,3 +282,4 @@ box.cfg{ replication_synchro_quorum = orig_synchro_quorum, \ replication_synchro_timeout = orig_synchro_timeout, \ } +box.ctl.demote() diff --git a/test/replication/qsync_basic.result b/test/replication/qsync_basic.result index 08474269e..f2e207943 100644 --- a/test/replication/qsync_basic.result +++ b/test/replication/qsync_basic.result @@ -700,3 +700,6 @@ box.space.sync:drop() box.schema.user.revoke('guest', 'replication') | --- | ... +box.ctl.demote() + | --- + | ... diff --git a/test/replication/qsync_basic.test.lua b/test/replication/qsync_basic.test.lua index 6a49e2b01..b7ba905a6 100644 --- a/test/replication/qsync_basic.test.lua +++ b/test/replication/qsync_basic.test.lua @@ -279,3 +279,4 @@ test_run:cmd('delete server replica') box.space.test:drop() box.space.sync:drop() box.schema.user.revoke('guest', 'replication') +box.ctl.demote() diff --git a/test/replication/qsync_errinj.result b/test/replication/qsync_errinj.result index 837802847..cf1e30a90 100644 --- a/test/replication/qsync_errinj.result +++ b/test/replication/qsync_errinj.result @@ -545,3 +545,6 @@ box.space.sync:drop() box.schema.user.revoke('guest', 'super') | --- | ... +box.ctl.demote() + | --- + | ... diff --git a/test/replication/qsync_errinj.test.lua b/test/replication/qsync_errinj.test.lua index 556c897c4..e7c85c58c 100644 --- a/test/replication/qsync_errinj.test.lua +++ b/test/replication/qsync_errinj.test.lua @@ -223,3 +223,4 @@ test_run:cmd('delete server replica') box.space.sync:drop() box.schema.user.revoke('guest', 'super') +box.ctl.demote() diff --git a/test/replication/qsync_snapshots.result b/test/replication/qsync_snapshots.result index f6b86ed70..ca418b168 100644 --- a/test/replication/qsync_snapshots.result +++ b/test/replication/qsync_snapshots.result @@ -302,3 +302,6 @@ box.cfg{ } | --- | ... +box.ctl.demote() + | --- + | ... diff --git a/test/replication/qsync_snapshots.test.lua b/test/replication/qsync_snapshots.test.lua index e5f70e46a..82c2e3f7c 100644 --- a/test/replication/qsync_snapshots.test.lua +++ b/test/replication/qsync_snapshots.test.lua @@ -131,3 +131,4 @@ box.cfg{ replication_synchro_quorum = orig_synchro_quorum, \ replication_synchro_timeout = orig_synchro_timeout, \ } +box.ctl.demote() diff --git a/test/replication/qsync_with_anon.result b/test/replication/qsync_with_anon.result index 5ec99c1ef..99c6fb902 100644 --- a/test/replication/qsync_with_anon.result +++ b/test/replication/qsync_with_anon.result @@ -223,6 +223,9 @@ box.cfg{ } | --- | ... +box.ctl.demote() + | --- + | ... test_run:cleanup_cluster() | --- | ... diff --git a/test/replication/qsync_with_anon.test.lua b/test/replication/qsync_with_anon.test.lua index 28e08697e..e73880ec7 100644 --- a/test/replication/qsync_with_anon.test.lua +++ b/test/replication/qsync_with_anon.test.lua @@ -82,4 +82,5 @@ box.cfg{ replication_synchro_quorum = orig_synchro_quorum, \ replication_synchro_timeout = orig_synchro_timeout, \ } +box.ctl.demote() test_run:cleanup_cluster() -- 2.30.1 (Apple Git-130)
next prev parent reply other threads:[~2021-06-10 13:36 UTC|newest] Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-06-10 13:32 [Tarantool-patches] [PATCH 0/7] forbid implicit limbo ownership transition Serge Petrenko via Tarantool-patches 2021-06-10 13:32 ` [Tarantool-patches] [PATCH 1/7] replication: always send raft state to subscribers Serge Petrenko via Tarantool-patches 2021-06-10 16:47 ` Cyrill Gorcunov via Tarantool-patches 2021-06-11 8:43 ` Serge Petrenko via Tarantool-patches 2021-06-11 8:44 ` Cyrill Gorcunov via Tarantool-patches 2021-06-15 20:53 ` Vladislav Shpilevoy via Tarantool-patches 2021-06-17 21:00 ` Serge Petrenko via Tarantool-patches 2021-06-10 13:32 ` [Tarantool-patches] [PATCH 2/7] replication: forbid implicit limbo owner transition Serge Petrenko via Tarantool-patches 2021-06-15 20:55 ` Vladislav Shpilevoy via Tarantool-patches 2021-06-17 21:00 ` Serge Petrenko via Tarantool-patches 2021-06-18 22:49 ` Vladislav Shpilevoy via Tarantool-patches 2021-06-21 10:13 ` Serge Petrenko via Tarantool-patches 2021-06-10 13:32 ` [Tarantool-patches] [PATCH 3/7] txn_limbo: fix promote term filtering Serge Petrenko via Tarantool-patches 2021-06-15 20:57 ` Vladislav Shpilevoy via Tarantool-patches 2021-06-17 21:00 ` Serge Petrenko via Tarantool-patches 2021-06-18 22:49 ` Vladislav Shpilevoy via Tarantool-patches 2021-06-21 8:55 ` Serge Petrenko via Tarantool-patches 2021-06-10 13:32 ` [Tarantool-patches] [PATCH 4/7] txn_limbo: persist the latest effective promote in snapshot Serge Petrenko via Tarantool-patches 2021-06-15 20:59 ` Vladislav Shpilevoy via Tarantool-patches 2021-06-17 21:00 ` Serge Petrenko via Tarantool-patches 2021-06-10 13:32 ` [Tarantool-patches] [PATCH 5/7] replication: send latest effective promote in initial join Serge Petrenko via Tarantool-patches 2021-06-15 21:00 ` Vladislav Shpilevoy via Tarantool-patches 2021-06-17 21:00 ` Serge Petrenko via Tarantool-patches 2021-06-18 22:52 ` Vladislav Shpilevoy via Tarantool-patches 2021-06-21 10:12 ` Serge Petrenko via Tarantool-patches 2021-06-10 13:32 ` Serge Petrenko via Tarantool-patches [this message] 2021-06-18 22:52 ` [Tarantool-patches] [PATCH 6/7] box: introduce `box.ctl.demote` Vladislav Shpilevoy via Tarantool-patches 2021-06-21 14:56 ` Serge Petrenko via Tarantool-patches 2021-06-10 13:32 ` [Tarantool-patches] [PATCH 7/7] box: make promote/demote always bump the term Serge Petrenko via Tarantool-patches 2021-06-15 21:00 ` Vladislav Shpilevoy via Tarantool-patches 2021-06-17 21:00 ` Serge Petrenko via Tarantool-patches 2021-06-18 22:53 ` Vladislav Shpilevoy via Tarantool-patches 2021-06-21 15:02 ` Serge Petrenko via Tarantool-patches 2021-06-15 20:53 ` [Tarantool-patches] [PATCH 0/7] forbid implicit limbo ownership transition Vladislav Shpilevoy via Tarantool-patches
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=5fc6e8a222fc1a05ad45d90fb306fcfe4423d3f1.1623331925.git.sergepetrenko@tarantool.org \ --to=tarantool-patches@dev.tarantool.org \ --cc=gorcunov@gmail.com \ --cc=sergepetrenko@tarantool.org \ --cc=v.shpilevoy@tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH 6/7] box: introduce `box.ctl.demote`' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox