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 | 16 |
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); |