From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTP id 4889626FA3 for ; Tue, 3 Jul 2018 09:03:54 -0400 (EDT) Received: from turing.freelists.org ([127.0.0.1]) by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id mfEsoHXubUNV for ; Tue, 3 Jul 2018 09:03:54 -0400 (EDT) Received: from smtp37.i.mail.ru (smtp37.i.mail.ru [94.100.177.97]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTPS id 0356526F9F for ; Tue, 3 Jul 2018 09:03:53 -0400 (EDT) Received: by smtp37.i.mail.ru with esmtpa (envelope-from ) id 1faKyG-0005b1-66 for tarantool-patches@freelists.org; Tue, 03 Jul 2018 16:03:52 +0300 From: Konstantin Belyavskiy Subject: [tarantool-patches] [PATCH v4 1/2] replication: rename thread from tx to tx_prio Date: Tue, 3 Jul 2018 16:03:46 +0300 Message-Id: <20180703130347.26296-2-k.belyavskiy@tarantool.org> In-Reply-To: <20180703130347.26296-1-k.belyavskiy@tarantool.org> References: <20180703130347.26296-1-k.belyavskiy@tarantool.org> Sender: tarantool-patches-bounce@freelists.org Errors-to: tarantool-patches-bounce@freelists.org Reply-To: tarantool-patches@freelists.org List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: tarantool-patches List-subscribe: List-owner: List-post: List-archive: To: tarantool-patches@freelists.org There are two different threads: 'tx' and 'tx_prio', the latter does not support yield(). Rename to avoid misunderstanding. Needed for #3397 --- src/box/wal.cc | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/box/wal.cc b/src/box/wal.cc index 099c70caa..93c350e1f 100644 --- a/src/box/wal.cc +++ b/src/box/wal.cc @@ -59,8 +59,11 @@ struct wal_thread { struct cord cord; /** A pipe from 'tx' thread to 'wal' */ struct cpipe wal_pipe; - /** Return pipe from 'wal' to tx' */ - struct cpipe tx_pipe; + /** + * Return pipe from 'wal' to tx'. This is a + * priority pipe and DOES NOT support yield. + */ + struct cpipe tx_prio_pipe; }; /* @@ -154,7 +157,7 @@ static void tx_schedule_commit(struct cmsg *msg); static struct cmsg_hop wal_request_route[] = { - {wal_write_to_disk, &wal_thread.tx_pipe}, + {wal_write_to_disk, &wal_thread.tx_prio_pipe}, {tx_schedule_commit, NULL}, }; @@ -414,7 +417,7 @@ wal_checkpoint(struct vclock *vclock, bool rotate) return 0; } static struct cmsg_hop wal_checkpoint_route[] = { - {wal_checkpoint_f, &wal_thread.tx_pipe}, + {wal_checkpoint_f, &wal_thread.tx_prio_pipe}, {wal_checkpoint_done_f, NULL}, }; vclock_create(vclock); @@ -453,7 +456,7 @@ wal_collect_garbage(int64_t lsn) struct wal_gc_msg msg; msg.lsn = lsn; bool cancellable = fiber_set_cancellable(false); - cbus_call(&wal_thread.wal_pipe, &wal_thread.tx_pipe, &msg, + cbus_call(&wal_thread.wal_pipe, &wal_thread.tx_prio_pipe, &msg, wal_collect_garbage_f, NULL, TIMEOUT_INFINITY); fiber_set_cancellable(cancellable); } @@ -544,7 +547,7 @@ wal_writer_begin_rollback(struct wal_writer *writer) * list. */ { wal_writer_clear_bus, &wal_thread.wal_pipe }, - { wal_writer_clear_bus, &wal_thread.tx_pipe }, + { wal_writer_clear_bus, &wal_thread.tx_prio_pipe }, /* * Step 2: writer->rollback queue contains all * messages which need to be rolled back, @@ -562,7 +565,7 @@ wal_writer_begin_rollback(struct wal_writer *writer) * all input until rollback mode is off. */ cmsg_init(&writer->in_rollback, rollback_route); - cpipe_push(&wal_thread.tx_pipe, &writer->in_rollback); + cpipe_push(&wal_thread.tx_prio_pipe, &writer->in_rollback); } static void @@ -691,7 +694,7 @@ wal_thread_f(va_list ap) * endpoint, to ensure that WAL messages are delivered * even when tx fiber pool is used up by net messages. */ - cpipe_create(&wal_thread.tx_pipe, "tx_prio"); + cpipe_create(&wal_thread.tx_prio_pipe, "tx_prio"); cbus_loop(&endpoint); @@ -703,7 +706,7 @@ wal_thread_f(va_list ap) if (xlog_is_open(&vy_log_writer.xlog)) xlog_close(&vy_log_writer.xlog, false); - cpipe_destroy(&wal_thread.tx_pipe); + cpipe_destroy(&wal_thread.tx_prio_pipe); return 0; } @@ -843,7 +846,7 @@ wal_write_vy_log(struct journal_entry *entry) struct wal_write_vy_log_msg msg; msg.entry= entry; bool cancellable = fiber_set_cancellable(false); - int rc = cbus_call(&wal_thread.wal_pipe, &wal_thread.tx_pipe, &msg, + int rc = cbus_call(&wal_thread.wal_pipe, &wal_thread.tx_prio_pipe, &msg, wal_write_vy_log_f, NULL, TIMEOUT_INFINITY); fiber_set_cancellable(cancellable); return rc; @@ -863,7 +866,7 @@ wal_rotate_vy_log() { struct cbus_call_msg msg; bool cancellable = fiber_set_cancellable(false); - cbus_call(&wal_thread.wal_pipe, &wal_thread.tx_pipe, &msg, + cbus_call(&wal_thread.wal_pipe, &wal_thread.tx_prio_pipe, &msg, wal_rotate_vy_log_f, NULL, TIMEOUT_INFINITY); fiber_set_cancellable(cancellable); } -- 2.14.3 (Apple Git-98)