summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/src/cursor/cur_backup_incr.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/third_party/wiredtiger/src/cursor/cur_backup_incr.c')
-rw-r--r--src/third_party/wiredtiger/src/cursor/cur_backup_incr.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/third_party/wiredtiger/src/cursor/cur_backup_incr.c b/src/third_party/wiredtiger/src/cursor/cur_backup_incr.c
index 5403e2308ff..d44070a2160 100644
--- a/src/third_party/wiredtiger/src/cursor/cur_backup_incr.c
+++ b/src/third_party/wiredtiger/src/cursor/cur_backup_incr.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2014-2019 MongoDB, Inc.
+ * Copyright (c) 2014-2020 MongoDB, Inc.
* Copyright (c) 2008-2014 WiredTiger, Inc.
* All rights reserved.
*
@@ -88,10 +88,12 @@ __curbackup_incr_next(WT_CURSOR *cursor)
{
WT_BTREE *btree;
WT_CURSOR_BACKUP *cb;
+ WT_DECL_ITEM(buf);
WT_DECL_RET;
WT_SESSION_IMPL *session;
wt_off_t size;
uint32_t raw;
+ const char *file;
cb = (WT_CURSOR_BACKUP *)cursor;
btree = cb->incr_cursor == NULL ? NULL : ((WT_CURSOR_BTREE *)cb->incr_cursor)->btree;
@@ -114,7 +116,14 @@ __curbackup_incr_next(WT_CURSOR *cursor)
cb->granularity, WT_BACKUP_RANGE);
} else if (btree == NULL || F_ISSET(cb, WT_CURBACKUP_FORCE_FULL)) {
/* We don't have this object's incremental information, and it's a full file copy. */
- WT_ERR(__wt_fs_size(session, cb->incr_file, &size));
+ /* If this is a log file, use the full pathname that may include the log path. */
+ file = cb->incr_file;
+ if (WT_PREFIX_MATCH(file, WT_LOG_FILENAME)) {
+ WT_ERR(__wt_scr_alloc(session, 0, &buf));
+ WT_ERR(__wt_log_filename(session, UINT32_MAX, file, buf));
+ file = buf->data;
+ }
+ WT_ERR(__wt_fs_size(session, file, &size));
cb->nbits = 0;
cb->offset = 0;
@@ -141,6 +150,7 @@ __curbackup_incr_next(WT_CURSOR *cursor)
err:
F_SET(cursor, raw);
+ __wt_scr_free(session, &buf);
API_END_RET(session, ret);
}