summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSusan LoVerso <sue@wiredtiger.com>2016-01-21 10:47:33 -0500
committerSusan LoVerso <sue@wiredtiger.com>2016-01-21 10:47:33 -0500
commit8e56f349e1f9b0c7cc10a6ecaec9c844babf4815 (patch)
tree5d80dc1f7b9b0c10937912a90627fb025131bcde
parent037092fdff46736da1f76b9ff7256467d293d268 (diff)
downloadmongo-8e56f349e1f9b0c7cc10a6ecaec9c844babf4815.tar.gz
WT-2338 Skip pre-allocating when backup cursor is open.
-rw-r--r--src/conn/conn_log.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/conn/conn_log.c b/src/conn/conn_log.c
index 3157f6d6af5..5e44436d0eb 100644
--- a/src/conn/conn_log.c
+++ b/src/conn/conn_log.c
@@ -694,12 +694,12 @@ __log_server(void *arg)
WT_LOG *log;
WT_SESSION_IMPL *session;
int freq_per_sec;
- bool signalled;
+ bool locked, signalled;
session = arg;
conn = S2C(session);
log = conn->log;
- signalled = false;
+ locked = signalled = false;
/*
* Set this to the number of times per second we want to force out the
@@ -740,8 +740,16 @@ __log_server(void *arg)
/*
* Perform log pre-allocation.
*/
- if (conn->log_prealloc > 0)
- WT_ERR(__log_prealloc_once(session));
+ if (conn->log_prealloc > 0) {
+ WT_ERR(__wt_readlock(
+ session, conn->hot_backup_lock));
+ locked = true;
+ if (!conn->hot_backup)
+ WT_ERR(__log_prealloc_once(session));
+ WT_ERR(__wt_readunlock(
+ session, conn->hot_backup_lock));
+ locked = false;
+ }
/*
* Perform the archive.
@@ -768,6 +776,9 @@ __log_server(void *arg)
if (0) {
err: __wt_err(session, ret, "log server error");
+ if (locked)
+ WT_TRET(__wt_readunlock(
+ session, conn->hot_backup_lock));
}
return (WT_THREAD_RET_VALUE);
}