diff options
Diffstat (limited to 'src/third_party/wiredtiger/src/cursor/cur_std.c')
-rw-r--r-- | src/third_party/wiredtiger/src/cursor/cur_std.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/third_party/wiredtiger/src/cursor/cur_std.c b/src/third_party/wiredtiger/src/cursor/cur_std.c index 597323cb4fa..3217b55cfa4 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 @@ -617,7 +621,8 @@ __wt_cursor_cache(WT_CURSOR *cursor, WT_DATA_HANDLE *dhandle) (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_DATA_INCR(session, session_cursors_cached); + WT_STAT_CONN_INCR(session, cursors_cached); F_SET(cursor, WT_CURSTD_CACHED); return (ret); } @@ -642,7 +647,8 @@ __wt_cursor_reopen(WT_CURSOR *cursor, WT_DATA_HANDLE *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_DATA_DECR(session, session_cursors_cached); + WT_STAT_CONN_DECR(session, cursors_cached); bucket = cursor->uri_hash % WT_HASH_ARRAY_SIZE; TAILQ_REMOVE(&session->cursor_cache[bucket], cursor, q); |