From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp39.i.mail.ru (smtp39.i.mail.ru [94.100.177.99]) (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 5383445C304 for ; Fri, 27 Nov 2020 00:19:30 +0300 (MSK) Date: Thu, 26 Nov 2020 21:19:29 +0000 From: Nikita Pettik Message-ID: <20201126211929.GA30305@tarantool.org> References: <073615333a88cf9ccf217ad90b121cd5074eddd9.1606251521.git.korablev@tarantool.org> <7b513ae7-2531-118d-7472-7e92e5cad6fc@tarantool.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <7b513ae7-2531-118d-7472-7e92e5cad6fc@tarantool.org> Subject: Re: [Tarantool-patches] [PATCH] vinyl: account statement statistics during .index rebuild List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Vladislav Shpilevoy Cc: tarantool-patches@dev.tarantool.org On 26 Nov 21:45, Vladislav Shpilevoy wrote: > Hi! Thanks for the patch! > > On 24.11.2020 22:03, Nikita Pettik wrote: > > It may turn out to be necessary to re-create .index file corresponding > > to .run file. During rebuild it was forgotten to account statement > > statistics, i.e. count of INSERTs, DELETEs etc. Let's fix it and patch > > vy_run_rebuild_index(). > > --- > > Branch: > > https://github.com/tarantool/tarantool/tree/np/vy-account-stmt-stat-on-index-rebuild > > N.B. problem is obvious and trivial to fix. However, test for it is likely > > to be way more sophisticated, so I haven't included it (but checked manually > > that everything works fine). > > How can I validate it manually? Drop .index, run tarantool with force-recovery, cat the content of .index file with tarantoolctl/xlog module. > > src/box/vy_run.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/src/box/vy_run.c b/src/box/vy_run.c > > index b9822dc3e..820a6ce3f 100644 > > --- a/src/box/vy_run.c > > +++ b/src/box/vy_run.c > > @@ -2452,6 +2452,8 @@ vy_run_rebuild_index(struct vy_run *run, const char *dir, > > goto close_err; > > } > > } > > + vy_stmt_stat_acct(&run->info.stmt_stat, > > + vy_stmt_type(tuple)); > > Why is it needed? The run is not created from the scratch. Only > its index is rebuilt, which is not related to the statistics, > AFAIU. The statements in the run are not changed here. It means > it was filled some time ago, and everything should have already > been accounted via vy_run_writer_write_to_page(). Possibly it doesn't affect anything, but just noted that in case of re-creating .index files during force-recovery, they contained zeroed statistics (in contrast to ordinary .index files). It may turn out to be helpful e.g. during digging into vinyl problems.