From: Vladimir Davydov <vdavydov.dev@gmail.com> To: kostja@tarantool.org Cc: tarantool-patches@freelists.org Subject: [PATCH v2 4/8] vinyl: bump mem version after committing statement Date: Sun, 27 May 2018 22:05:52 +0300 [thread overview] Message-ID: <f48ddff1d6bd64f26ac4a9da3ca909456e5e490c.1527446023.git.vdavydov.dev@gmail.com> (raw) In-Reply-To: <cover.1527446023.git.vdavydov.dev@gmail.com> In-Reply-To: <cover.1527446023.git.vdavydov.dev@gmail.com> Since commit 1e1c1fdbeddb ("vinyl: make read iterator always return newest tuple version") vinyl read iterator guarantees that any tuple it returns is the newest version in the iterator read view. However, if we don't bump mem version after assigning LSN to a mem statement, a read iterator using committed_read_view might not see it and return a stale tuple. Currently, there's no code that relies on this iterator feature, but we will need it for building new indexes. Without this patch, build (introduced later in the series) might return inconsistent results. Needed for #1653 --- src/box/vy_mem.c | 1 + test/unit/vy_mem.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/box/vy_mem.c b/src/box/vy_mem.c index 65e31ea5..faa2c06f 100644 --- a/src/box/vy_mem.c +++ b/src/box/vy_mem.c @@ -250,6 +250,7 @@ vy_mem_commit_stmt(struct vy_mem *mem, const struct tuple *stmt) assert(mem->min_lsn <= lsn); if (mem->max_lsn < lsn) mem->max_lsn = lsn; + mem->version++; } void diff --git a/test/unit/vy_mem.c b/test/unit/vy_mem.c index 6641dc0c..6666f94c 100644 --- a/test/unit/vy_mem.c +++ b/test/unit/vy_mem.c @@ -51,9 +51,9 @@ test_basic(void) /* Check version */ stmt = vy_mem_insert_template(mem, &stmts[4]); - is(mem->version, 6, "vy_mem->version") + is(mem->version, 8, "vy_mem->version") vy_mem_commit_stmt(mem, stmt); - is(mem->version, 6, "vy_mem->version") + is(mem->version, 9, "vy_mem->version") /* Clean up */ vy_mem_delete(mem); -- 2.11.0
next prev parent reply other threads:[~2018-05-27 19:05 UTC|newest] Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-05-27 19:05 [PATCH v2 0/8] Allow to build indexes for vinyl spaces Vladimir Davydov 2018-05-27 19:05 ` [PATCH v2 1/8] vinyl: allocate key parts in vy_recovery_do_create_lsm Vladimir Davydov 2018-05-30 11:51 ` Konstantin Osipov 2018-05-27 19:05 ` [PATCH v2 2/8] vinyl: update recovery context with records written during recovery Vladimir Davydov 2018-05-30 11:51 ` Konstantin Osipov 2018-05-27 19:05 ` [PATCH v2 3/8] vinyl: log new index before WAL write on DDL Vladimir Davydov 2018-06-06 18:01 ` Konstantin Osipov 2018-05-27 19:05 ` Vladimir Davydov [this message] 2018-06-07 5:41 ` [PATCH v2 4/8] vinyl: bump mem version after committing statement Konstantin Osipov 2018-05-27 19:05 ` [PATCH v2 5/8] vinyl: allow to commit statements to mem in arbitrary order Vladimir Davydov 2018-06-07 5:41 ` Konstantin Osipov 2018-05-27 19:05 ` [PATCH v2 6/8] vinyl: relax limitation imposed on run min/max lsn Vladimir Davydov 2018-05-27 19:05 ` [PATCH v2 7/8] vinyl: factor out vy_check_is_unique_secondary Vladimir Davydov 2018-05-27 19:05 ` [PATCH v2 8/8] vinyl: allow to build secondary index for non-empty space Vladimir Davydov
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=f48ddff1d6bd64f26ac4a9da3ca909456e5e490c.1527446023.git.vdavydov.dev@gmail.com \ --to=vdavydov.dev@gmail.com \ --cc=kostja@tarantool.org \ --cc=tarantool-patches@freelists.org \ --subject='Re: [PATCH v2 4/8] vinyl: bump mem version after committing statement' \ /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