[PATCH 1/5] xlog: fix filename in error messages
Vladimir Davydov
vdavydov.dev at gmail.com
Sun Oct 7 23:27:14 MSK 2018
- xlog_rename() doesn't strip xlog->filename of inprogress suffix so
write errors will mistakenly report the filename as inprogress.
- xlog_create() uses a name without inprogress suffix for error
reporting while it actually creates an inprogress file.
---
src/box/xlog.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/box/xlog.c b/src/box/xlog.c
index d399a726..de5e52f7 100644
--- a/src/box/xlog.c
+++ b/src/box/xlog.c
@@ -744,6 +744,7 @@ xlog_rename(struct xlog *l)
return -1;
}
l->is_inprogress = false;
+ filename[suffix - filename] = '\0';
return 0;
}
@@ -820,8 +821,9 @@ xlog_create(struct xlog *xlog, const char *name, int flags,
*/
xlog->fd = open(xlog->filename, flags, 0644);
if (xlog->fd < 0) {
- say_syserror("open, [%s]", name);
- diag_set(SystemError, "failed to create file '%s'", name);
+ say_syserror("open, [%s]", xlog->filename);
+ diag_set(SystemError, "failed to create file '%s'",
+ xlog->filename);
goto err_open;
}
@@ -834,7 +836,8 @@ xlog_create(struct xlog *xlog, const char *name, int flags,
/* Write metadata */
if (fio_writen(xlog->fd, meta_buf, meta_len) < 0) {
- diag_set(SystemError, "%s: failed to write xlog meta", name);
+ diag_set(SystemError, "%s: failed to write xlog meta",
+ xlog->filename);
goto err_write;
}
--
2.11.0
More information about the Tarantool-patches
mailing list