diff options
author | Susan LoVerso <sue@wiredtiger.com> | 2016-01-21 10:47:33 -0500 |
---|---|---|
committer | Susan LoVerso <sue@wiredtiger.com> | 2016-01-21 10:47:33 -0500 |
commit | 8e56f349e1f9b0c7cc10a6ecaec9c844babf4815 (patch) | |
tree | 5d80dc1f7b9b0c10937912a90627fb025131bcde | |
parent | 037092fdff46736da1f76b9ff7256467d293d268 (diff) | |
download | mongo-8e56f349e1f9b0c7cc10a6ecaec9c844babf4815.tar.gz |
WT-2338 Skip pre-allocating when backup cursor is open.
-rw-r--r-- | src/conn/conn_log.c | 19 |
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); } |