From: Georgy Kirichenko <georgy@tarantool.org> To: tarantool-patches@freelists.org Cc: Georgy Kirichenko <georgy@tarantool.org> Subject: [tarantool-patches] [PATCH v4 0/9] Parallel applier Date: Thu, 20 Jun 2019 00:23:07 +0300 [thread overview] Message-ID: <cover.1560978655.git.georgy@tarantool.org> (raw) This patch set introduces parallel applier processing on top of asynchronous transaction feature with corresponding fixes that are essential for the patch set. This patch set is focused on three major options: 1. To make a transaction and fiber engines independent from one another. 2. To make a transaction commit asynchronous. 3. To allow applier write transaction in parallel. Changes in v4: - Rebase against latest master - Move helper commits to the head of the patch set - Squash asynchronous wal and asynchronous transaction commits - Make txn responsible for fiber yields - Make journal asynchronous and simplify its interface - Don't implement txn_wait method - Minor fixes according to review Changes in v3: - Add a parallel applier implementation - Store transaction related data such as ddl trigger to a transaction memory region - Fix privileges defining - Minor fixes according to review Changes in v2: - Three patches are merged to master - Replicated rows are also copied to txn region - A fiber to process tx_prio endpoint - Engine commit and triggers are changed in order - Minor fixes according to review NOTE: There should be a follow up patch to remove redundant and excess code such a fiber_gc invocation but let it be out of the scope of the current patch set. Branch: https://github.com/tarantool/tarantool/tree/g.kirichenko/gh-1254-parallel-applier Issue: https://github.com/tarantool/tarantool/issues/1254 Georgy Kirichenko (9): txn: handle fiber stop event at transaction level core: latch_steal routine txn: get rid of autocommit from a txn structure txn: get rid of fiber_gc from txn_rollback wal: a dedicated wal scheduling fiber wal: introduce a journal entry finalization callback txn: introduce asynchronous txn commit applier: apply transaction in parallel test: fix flaky test src/box/alter.cc | 5 + src/box/applier.cc | 162 +++++++++++--- src/box/applier.h | 6 +- src/box/box.cc | 105 +++++++-- src/box/call.c | 22 +- src/box/index.cc | 10 +- src/box/journal.c | 12 +- src/box/journal.h | 18 +- src/box/memtx_engine.c | 16 +- src/box/memtx_space.c | 8 +- src/box/replication.cc | 7 + src/box/replication.h | 14 ++ src/box/sql.c | 2 +- src/box/txn.c | 302 ++++++++++++++++---------- src/box/txn.h | 40 ++-- src/box/vinyl.c | 8 - src/box/vy_log.c | 3 +- src/box/vy_scheduler.c | 16 +- src/box/wal.c | 92 +++++--- src/lib/core/latch.h | 10 + test/replication/sync.result | 7 +- test/replication/sync.test.lua | 4 +- test/replication/transaction.result | 16 +- test/replication/transaction.test.lua | 7 +- 24 files changed, 617 insertions(+), 275 deletions(-) -- 2.22.0
next reply other threads:[~2019-06-19 21:23 UTC|newest] Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-06-19 21:23 Georgy Kirichenko [this message] 2019-06-19 21:23 ` [tarantool-patches] [PATCH v4 1/9] txn: handle fiber stop event at transaction level Georgy Kirichenko 2019-06-20 7:28 ` [tarantool-patches] " Konstantin Osipov 2019-06-20 11:39 ` [tarantool-patches] " Vladimir Davydov 2019-06-19 21:23 ` [tarantool-patches] [PATCH v4 2/9] core: latch_steal routine Georgy Kirichenko 2019-06-20 7:28 ` [tarantool-patches] " Konstantin Osipov 2019-06-20 11:53 ` [tarantool-patches] " Vladimir Davydov 2019-06-20 20:34 ` Георгий Кириченко 2019-06-19 21:23 ` [tarantool-patches] [PATCH v4 3/9] txn: get rid of autocommit from a txn structure Georgy Kirichenko 2019-06-20 7:32 ` [tarantool-patches] " Konstantin Osipov 2019-06-20 11:52 ` [tarantool-patches] " Vladimir Davydov 2019-06-20 20:16 ` Георгий Кириченко 2019-06-19 21:23 ` [tarantool-patches] [PATCH v4 4/9] txn: get rid of fiber_gc from txn_rollback Georgy Kirichenko 2019-06-20 7:43 ` [tarantool-patches] " Konstantin Osipov 2019-06-20 20:35 ` Георгий Кириченко 2019-06-20 13:03 ` [tarantool-patches] " Vladimir Davydov 2019-06-20 20:16 ` Георгий Кириченко 2019-06-19 21:23 ` [tarantool-patches] [PATCH v4 5/9] wal: a dedicated wal scheduling fiber Georgy Kirichenko 2019-06-20 7:53 ` [tarantool-patches] " Konstantin Osipov 2019-06-20 13:05 ` [tarantool-patches] " Vladimir Davydov 2019-06-19 21:23 ` [tarantool-patches] [PATCH v4 6/9] wal: introduce a journal entry finalization callback Georgy Kirichenko 2019-06-20 7:56 ` [tarantool-patches] " Konstantin Osipov 2019-06-20 14:08 ` [tarantool-patches] " Vladimir Davydov 2019-06-20 20:22 ` Георгий Кириченко 2019-06-21 7:26 ` [tarantool-patches] " Konstantin Osipov 2019-06-19 21:23 ` [tarantool-patches] [PATCH v4 7/9] txn: introduce asynchronous txn commit Georgy Kirichenko 2019-06-20 8:01 ` [tarantool-patches] " Konstantin Osipov 2019-06-20 15:00 ` [tarantool-patches] " Vladimir Davydov 2019-06-21 7:28 ` [tarantool-patches] " Konstantin Osipov 2019-06-19 21:23 ` [tarantool-patches] [PATCH v4 8/9] applier: apply transaction in parallel Georgy Kirichenko 2019-06-20 7:41 ` [tarantool-patches] " Георгий Кириченко 2019-06-20 8:07 ` Konstantin Osipov 2019-06-20 16:37 ` Vladimir Davydov 2019-06-20 20:33 ` Георгий Кириченко 2019-06-21 8:36 ` Vladimir Davydov 2019-06-20 8:06 ` Konstantin Osipov 2019-06-19 21:23 ` [tarantool-patches] [PATCH v4 9/9] test: fix flaky test Georgy Kirichenko
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=cover.1560978655.git.georgy@tarantool.org \ --to=georgy@tarantool.org \ --cc=tarantool-patches@freelists.org \ --subject='Re: [tarantool-patches] [PATCH v4 0/9] Parallel applier' \ /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