summaryrefslogtreecommitdiff
path: root/src/async/async_worker.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/async/async_worker.c')
-rw-r--r--src/async/async_worker.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/src/async/async_worker.c b/src/async/async_worker.c
index 11f59ed14f1..57ebe5d8bb1 100644
--- a/src/async/async_worker.c
+++ b/src/async/async_worker.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2014-2016 MongoDB, Inc.
+ * Copyright (c) 2014-2017 MongoDB, Inc.
* Copyright (c) 2008-2014 WiredTiger, Inc.
* All rights reserved.
*
@@ -57,7 +57,6 @@ retry:
return (0);
if (!F_ISSET(conn, WT_CONN_SERVER_ASYNC))
return (0);
- WT_RET(WT_SESSION_CHECK_PANIC(session));
WT_ORDERED_READ(last_consume, async->alloc_tail);
}
if (async->flush_state == WT_ASYNC_FLUSHING)
@@ -282,7 +281,7 @@ WT_THREAD_RET
__wt_async_worker(void *arg)
{
WT_ASYNC *async;
- WT_ASYNC_CURSOR *ac, *acnext;
+ WT_ASYNC_CURSOR *ac;
WT_ASYNC_OP_IMPL *op;
WT_ASYNC_WORKER_STATE worker;
WT_CONNECTION_IMPL *conn;
@@ -301,11 +300,10 @@ __wt_async_worker(void *arg)
WT_ERR(__async_op_dequeue(conn, session, &op));
if (op != NULL && op != &async->flush_op) {
/*
- * If an operation fails, we want the worker thread to
- * keep running, unless there is a panic.
+ * Operation failure doesn't cause the worker thread to
+ * exit.
*/
(void)__async_worker_op(session, op, &worker);
- WT_ERR(WT_SESSION_CHECK_PANIC(session));
} else if (async->flush_state == WT_ASYNC_FLUSHING) {
/*
* Worker flushing going on. Last worker to the party
@@ -342,12 +340,10 @@ err: WT_PANIC_MSG(session, ret, "async worker error");
* Worker thread cleanup, close our cached cursors and free all the
* WT_ASYNC_CURSOR structures.
*/
- ac = TAILQ_FIRST(&worker.cursorqh);
- while (ac != NULL) {
- acnext = TAILQ_NEXT(ac, q);
+ while ((ac = TAILQ_FIRST(&worker.cursorqh)) != NULL) {
+ TAILQ_REMOVE(&worker.cursorqh, ac, q);
WT_TRET(ac->c->close(ac->c));
__wt_free(session, ac);
- ac = acnext;
}
return (WT_THREAD_RET_VALUE);
}