[Tarantool-patches] [PATCH v2 2/3] Fix test box-tap/cfg.test.lua on openSuSE

Alexander V. Tikhonov avtikhon at tarantool.org
Tue Jul 7 16:20:57 MSK 2020


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



More information about the Tarantool-patches mailing list