From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpng1.m.smailru.net (smtpng1.m.smailru.net [94.100.181.251]) (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 01464445321 for ; Tue, 7 Jul 2020 16:21:01 +0300 (MSK) From: "Alexander V. Tikhonov" Date: Tue, 7 Jul 2020 16:20:57 +0300 Message-Id: <99ba534fc775257849ba5b3d9b6bdd5711c817cb.1594126705.git.avtikhon@tarantool.org> In-Reply-To: References: In-Reply-To: References: Subject: [Tarantool-patches] [PATCH v2 2/3] Fix test box-tap/cfg.test.lua on openSuSE List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Kirill Yukhin , Alexander Turenko Cc: tarantool-patches@dev.tarantool.org Found that test fails on its subtest checking: "gh-2872 bootstrap is aborted if vinyl_dir contains vylog files left from previous runs" Debugging src/box/xlog.c found that all checks were correct, but at function: src/box/vy_log.c:vy_log_bootstrap() the check on of the errno on ENOENT blocked the negative return from function: src/box/xlog.c:xdir_scan() Found that errno was already set to ENOENT before the xdir_scan() call. To fix the issue the errno must be clean before the call to xdir_scan, because we are interesting in it only from this function. The same issue fixed at function: src/box/vy_log.c:vy_log_begin_recovery() Closes #4594 Needed for #4562 --- src/box/vy_log.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/box/vy_log.c b/src/box/vy_log.c index 311985c72..86599fd15 100644 --- a/src/box/vy_log.c +++ b/src/box/vy_log.c @@ -1014,6 +1014,7 @@ vy_log_rebootstrap(void) int vy_log_bootstrap(void) { + errno = 0; if (xdir_scan(&vy_log.dir) < 0 && errno != ENOENT) return -1; if (xdir_last_vclock(&vy_log.dir, &vy_log.last_checkpoint) >= 0) @@ -1036,6 +1037,7 @@ vy_log_begin_recovery(const struct vclock *vclock) * because vinyl might not be even in use. Complain only * on an attempt to write a vylog. */ + errno = 0; if (xdir_scan(&vy_log.dir) < 0 && errno != ENOENT) return NULL; -- 2.17.1