summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/src/cursor/cur_std.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/third_party/wiredtiger/src/cursor/cur_std.c')
-rw-r--r--src/third_party/wiredtiger/src/cursor/cur_std.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/third_party/wiredtiger/src/cursor/cur_std.c b/src/third_party/wiredtiger/src/cursor/cur_std.c
index ba00a474f02..718f59447fc 100644
--- a/src/third_party/wiredtiger/src/cursor/cur_std.c
+++ b/src/third_party/wiredtiger/src/cursor/cur_std.c
@@ -598,6 +598,10 @@ __wt_cursor_cache(WT_CURSOR *cursor, WT_DATA_HANDLE *dhandle)
WT_TRET(cursor->reset(cursor));
+ /* Don't keep buffers allocated for cached cursors. */
+ __wt_buf_free(session, &cursor->key);
+ __wt_buf_free(session, &cursor->value);
+
/*
* Acquire a reference while decrementing the in-use counter.
* After this point, the dhandle may be marked dead, but the
@@ -616,8 +620,8 @@ __wt_cursor_cache(WT_CURSOR *cursor, WT_DATA_HANDLE *dhandle)
TAILQ_INSERT_HEAD(&session->cursor_cache[bucket], cursor, q);
(void)__wt_atomic_sub32(&S2C(session)->open_cursor_count, 1);
- WT_STAT_DATA_DECR(session, session_cursor_open);
- WT_STAT_DATA_INCR(session, session_cursor_cached);
+ WT_STAT_CONN_INCR_ATOMIC(session, cursor_cached_count);
+ WT_STAT_DATA_DECR(session, cursor_open_count);
F_SET(cursor, WT_CURSTD_CACHED);
return (ret);
}
@@ -641,8 +645,8 @@ __wt_cursor_reopen(WT_CURSOR *cursor, WT_DATA_HANDLE *dhandle)
WT_DHANDLE_RELEASE(dhandle);
}
(void)__wt_atomic_add32(&S2C(session)->open_cursor_count, 1);
- WT_STAT_DATA_INCR(session, session_cursor_open);
- WT_STAT_DATA_DECR(session, session_cursor_cached);
+ WT_STAT_CONN_DECR_ATOMIC(session, cursor_cached_count);
+ WT_STAT_DATA_INCR(session, cursor_open_count);
bucket = cursor->uri_hash % WT_HASH_ARRAY_SIZE;
TAILQ_REMOVE(&session->cursor_cache[bucket], cursor, q);
@@ -865,7 +869,7 @@ __wt_cursor_close(WT_CURSOR *cursor)
TAILQ_REMOVE(&session->cursors, cursor, q);
(void)__wt_atomic_sub32(&S2C(session)->open_cursor_count, 1);
- WT_STAT_DATA_DECR(session, session_cursor_open);
+ WT_STAT_DATA_DECR(session, cursor_open_count);
}
__wt_buf_free(session, &cursor->key);
__wt_buf_free(session, &cursor->value);
@@ -1137,7 +1141,7 @@ __wt_cursor_init(WT_CURSOR *cursor,
F_SET(cursor, WT_CURSTD_OPEN);
(void)__wt_atomic_add32(&S2C(session)->open_cursor_count, 1);
- WT_STAT_DATA_INCR(session, session_cursor_open);
+ WT_STAT_DATA_INCR(session, cursor_open_count);
*cursorp = (cdump != NULL) ? cdump : cursor;
return (0);