diff options
author | Luke Chen <luke.chen@mongodb.com> | 2021-06-18 16:55:15 +1000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-06-18 07:20:36 +0000 |
commit | fa61108b39cfe512eb7b81541b19219eac2c1c0d (patch) | |
tree | 73168d7ea66f35d488b500a5be1d1b279da43b1c /src/third_party | |
parent | 2cca0d293e35607956f8a84067c563fc3ebfc7cf (diff) | |
download | mongo-fa61108b39cfe512eb7b81541b19219eac2c1c0d.tar.gz |
Import wiredtiger: e78819461f334671eef6773c93faff2e98c56cc0 from branch mongodb-5.0
ref: b2dce5bb8f..e78819461f
for: 5.1.0
WT-7279 Allow multiple terminate calls for storage source extension
WT-7591 Fixes to allow cursors to be open during flush_tier
WT-7605 Drop support for million-collection-test
WT-7667 Fix workgen JSON output
WT-7675 Query last ckpt timestamp changes without taking checkpoint
Diffstat (limited to 'src/third_party')
-rw-r--r-- | src/third_party/wiredtiger/bench/workgen/workgen.cxx | 231 | ||||
-rw-r--r-- | src/third_party/wiredtiger/bench/workgen/workgen_int.h | 10 | ||||
-rw-r--r-- | src/third_party/wiredtiger/dist/stat_data.py | 1 | ||||
-rw-r--r-- | src/third_party/wiredtiger/ext/storage_sources/local_store/local_store.c | 38 | ||||
-rw-r--r-- | src/third_party/wiredtiger/import.data | 2 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/conn/conn_api.c | 5 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/conn/conn_tiered.c | 22 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/include/stat.h | 1 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/include/wiredtiger.in | 435 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/support/stat.c | 3 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/txn/txn_timestamp.c | 7 | ||||
-rwxr-xr-x | src/third_party/wiredtiger/test/evergreen.yml | 23 | ||||
-rwxr-xr-x | src/third_party/wiredtiger/test/suite/test_tiered02.py | 3 | ||||
-rwxr-xr-x | src/third_party/wiredtiger/test/suite/test_tiered06.py | 18 |
14 files changed, 435 insertions, 364 deletions
diff --git a/src/third_party/wiredtiger/bench/workgen/workgen.cxx b/src/third_party/wiredtiger/bench/workgen/workgen.cxx index 9d853136c1b..5ac782da18e 100644 --- a/src/third_party/wiredtiger/bench/workgen/workgen.cxx +++ b/src/third_party/wiredtiger/bench/workgen/workgen.cxx @@ -415,31 +415,17 @@ Monitor::~Monitor() {} int Monitor::run() { struct timespec t; struct tm *tm, _tm; - char time_buf[64], version[100]; + char version[100]; Stats prev_totals; WorkloadOptions *options = &_wrunner._workload->options; uint64_t latency_max = (uint64_t)options->max_latency * THOUSAND; - size_t buf_size; - bool first; + bool first_iteration; - (*_out) << "#time," - << "totalsec," - << "read ops per second," - << "insert ops per second," - << "update ops per second," - << "checkpoints," - << "read average latency(uS)," - << "read minimum latency(uS)," - << "read maximum latency(uS)," - << "insert average latency(uS)," - << "insert min latency(uS)," - << "insert maximum latency(uS)," - << "update average latency(uS)," - << "update min latency(uS)," - << "update maximum latency(uS)" - << std::endl; + // Format header of the table in _out stream. + if (_out != NULL) + _format_out_header(); - first = true; + first_iteration = true; workgen_version(version, sizeof(version)); Stats prev_interval; @@ -449,11 +435,15 @@ int Monitor::run() { useconds_t sample_usecs = ms_to_us(options->sample_interval_ms) - sec_to_us(sample_secs); + // Format JSON prefix. + if (_json != NULL) + _format_json_prefix(version); + while (!_stop) { int waitsecs; useconds_t waitusecs; - if (first && options->warmup > 0) { + if (first_iteration && options->warmup > 0) { waitsecs = options->warmup; waitusecs = 0; } else { @@ -471,7 +461,6 @@ int Monitor::run() { workgen_epoch(&t); tm = localtime_r(&t.tv_sec, &_tm); - (void)strftime(time_buf, sizeof(time_buf), "%b %d %H:%M:%S", tm); Stats new_totals(true); for (std::vector<ThreadRunner>::iterator tr = @@ -480,42 +469,90 @@ int Monitor::run() { Stats interval(new_totals); interval.subtract(prev_totals); - double interval_secs = options->sample_interval_ms / 1000.0; - uint64_t cur_reads = (uint64_t)(interval.read.ops / interval_secs); - uint64_t cur_inserts = (uint64_t)(interval.insert.ops / interval_secs); - uint64_t cur_updates = (uint64_t)(interval.update.ops / interval_secs); bool checkpointing = new_totals.checkpoint.ops_in_progress > 0 || interval.checkpoint.ops > 0; + double interval_secs = options->sample_interval_ms / 1000.0; + + // Format entry into _out stream. + if (_out != NULL) + _format_out_entry(interval, interval_secs, t, checkpointing, *tm); + + // Format entry into _json stream. + if (_json != NULL) + _format_json_entry(*tm, t, first_iteration, interval, checkpointing, interval_secs); + + // Check latency threshold. Write warning into std::cerr in case read, insert or update + // exceeds latency_max. + _check_latency_threshold(interval, latency_max); + + prev_interval.assign(interval); + prev_totals.assign(new_totals); + + first_iteration = false; + } + + // Format JSON suffix. + if (_json != NULL) + _format_json_suffix(); + + return (0); +} - uint64_t totalsec = ts_sec(t - _wrunner._start); - (*_out) << time_buf - << "," << totalsec - << "," << cur_reads - << "," << cur_inserts - << "," << cur_updates - << "," << (checkpointing ? 'Y' : 'N') - << "," << interval.read.average_latency() - << "," << interval.read.min_latency - << "," << interval.read.max_latency - << "," << interval.insert.average_latency() - << "," << interval.insert.min_latency - << "," << interval.insert.max_latency - << "," << interval.update.average_latency() - << "," << interval.update.min_latency - << "," << interval.update.max_latency - << std::endl; - - if (_json != NULL) { -#define WORKGEN_TIMESTAMP_JSON "%Y-%m-%dT%H:%M:%S" - buf_size = strftime(time_buf, sizeof(time_buf), - WORKGEN_TIMESTAMP_JSON, tm); - ASSERT(buf_size <= sizeof(time_buf)); - snprintf(&time_buf[buf_size], sizeof(time_buf) - buf_size, - ".%3.3" PRIu64 "Z", (uint64_t)ns_to_ms(t.tv_nsec)); - - // Note: we could allow this to be configurable. - int percentiles[4] = {50, 95, 99, 0}; +void Monitor::_format_out_header() { + (*_out) << "#time," + << "totalsec," + << "read ops per second," + << "insert ops per second," + << "update ops per second," + << "checkpoints," + << "read average latency(uS)," + << "read minimum latency(uS)," + << "read maximum latency(uS)," + << "insert average latency(uS)," + << "insert min latency(uS)," + << "insert maximum latency(uS)," + << "update average latency(uS)," + << "update min latency(uS)," + << "update maximum latency(uS)" + << std::endl; +} + +void Monitor::_format_out_entry(const Stats &interval, double interval_secs, + const timespec ×pec, bool checkpointing, const tm &tm) { + char time_buf[64]; + uint64_t cur_reads = (uint64_t)(interval.read.ops / interval_secs); + uint64_t cur_inserts = (uint64_t)(interval.insert.ops / interval_secs); + uint64_t cur_updates = (uint64_t)(interval.update.ops / interval_secs); + uint64_t totalsec = ts_sec(timespec - _wrunner._start); + + (void)strftime(time_buf, sizeof(time_buf), "%b %d %H:%M:%S", &tm); + (*_out) << time_buf + << "," << totalsec + << "," << cur_reads + << "," << cur_inserts + << "," << cur_updates + << "," << (checkpointing ? 'Y' : 'N') + << "," << interval.read.average_latency() + << "," << interval.read.min_latency + << "," << interval.read.max_latency + << "," << interval.insert.average_latency() + << "," << interval.insert.min_latency + << "," << interval.insert.max_latency + << "," << interval.update.average_latency() + << "," << interval.update.min_latency + << "," << interval.update.max_latency + << std::endl; +} +void Monitor::_format_json_prefix(const std::string &version) { + (*_json) << "{"; + (*_json) << "\"version\":\"" << version << "\","; + (*_json) << "\"workgen\":["; +} + +void Monitor::_format_json_entry(const tm &tm, const timespec ×pec, bool first_iteration, + const Stats &interval, bool checkpointing, double interval_secs) { +#define WORKGEN_TIMESTAMP_JSON "%Y-%m-%dT%H:%M:%S" #define TRACK_JSON(f, name, t, percentiles, extra) \ do { \ int _i; \ @@ -532,45 +569,53 @@ int Monitor::run() { (f) << "}"; \ } while(0) - (*_json) << "{"; - if (first) { - (*_json) << "\"version\":\"" << version << "\","; - first = false; - } - (*_json) << "\"localTime\":\"" << time_buf - << "\",\"workgen\":{"; - TRACK_JSON(*_json, "read", interval.read, percentiles, ""); - (*_json) << ","; - TRACK_JSON(*_json, "insert", interval.insert, percentiles, ""); - (*_json) << ","; - TRACK_JSON(*_json, "update", interval.update, percentiles, ""); - (*_json) << ","; - TRACK_JSON(*_json, "checkpoint", interval.checkpoint, percentiles, - "\"active\":" << (checkpointing ? "1," : "0,")); - (*_json) << "}}" << std::endl; - } - - uint64_t read_max = interval.read.max_latency; - uint64_t insert_max = interval.insert.max_latency; - uint64_t update_max = interval.update.max_latency; - - if (read_max > latency_max) - std::cerr << "WARNING: max latency exceeded for read operation. Threshold " - << latency_max << " us, recorded " << read_max << " us, diff " - << (read_max - latency_max) << " us." << std::endl; - if (insert_max > latency_max) - std::cerr << "WARNING: max latency exceeded for insert operation. Threshold " - << latency_max << " us, recorded " << insert_max << " us, diff " - << (insert_max - latency_max) << " us." << std::endl; - if (update_max > latency_max) - std::cerr << "WARNING: max latency exceeded for update operation. Threshold " - << latency_max << " us, recorded " << insert_max << " us, diff " - << (update_max - latency_max) << " us." << std::endl; - - prev_interval.assign(interval); - prev_totals.assign(new_totals); - } - return (0); + // Note: we could allow this to be configurable. + int percentiles[4] = {50, 95, 99, 0}; + size_t buf_size; + char time_buf[64]; + + buf_size = strftime(time_buf, sizeof(time_buf), WORKGEN_TIMESTAMP_JSON, &tm); + ASSERT(buf_size <= sizeof(time_buf)); + snprintf(&time_buf[buf_size], sizeof(time_buf) - buf_size, + ".%3.3" PRIu64 "Z", (uint64_t)ns_to_ms(timespec.tv_nsec)); + + if (!first_iteration) + (*_json) << ","; + + (*_json) << "{"; + (*_json) << "\"localTime\":\"" << time_buf << "\","; + TRACK_JSON(*_json, "read", interval.read, percentiles, ""); + (*_json) << ","; + TRACK_JSON(*_json, "insert", interval.insert, percentiles, ""); + (*_json) << ","; + TRACK_JSON(*_json, "update", interval.update, percentiles, ""); + (*_json) << ","; + TRACK_JSON(*_json, "checkpoint", interval.checkpoint, percentiles, + "\"active\":" << (checkpointing ? "1," : "0,")); + (*_json) << "}" << std::endl; +} + +void Monitor::_format_json_suffix() { + (*_json) << "]}" << std::endl; +} + +void Monitor::_check_latency_threshold(const Stats &interval, uint64_t latency_max) { + uint64_t read_max = interval.read.max_latency; + uint64_t insert_max = interval.insert.max_latency; + uint64_t update_max = interval.update.max_latency; + + if (read_max > latency_max) + std::cerr << "WARNING: max latency exceeded for read operation. Threshold " + << latency_max << " us, recorded " << read_max << " us, diff " + << (read_max - latency_max) << " us." << std::endl; + if (insert_max > latency_max) + std::cerr << "WARNING: max latency exceeded for insert operation. Threshold " + << latency_max << " us, recorded " << insert_max << " us, diff " + << (insert_max - latency_max) << " us." << std::endl; + if (update_max > latency_max) + std::cerr << "WARNING: max latency exceeded for update operation. Threshold " + << latency_max << " us, recorded " << insert_max << " us, diff " + << (update_max - latency_max) << " us." << std::endl; } ParetoOptions ParetoOptions::DEFAULT; diff --git a/src/third_party/wiredtiger/bench/workgen/workgen_int.h b/src/third_party/wiredtiger/bench/workgen/workgen_int.h index 5e7982b3bea..8cbb44d454a 100644 --- a/src/third_party/wiredtiger/bench/workgen/workgen_int.h +++ b/src/third_party/wiredtiger/bench/workgen/workgen_int.h @@ -179,6 +179,16 @@ struct Monitor { Monitor(WorkloadRunner &wrunner); ~Monitor(); int run(); + +private: + void _format_out_header(); + void _format_out_entry(const Stats &interval, double interval_secs, const timespec ×pec, + bool checkpointing, const tm &tm); + void _format_json_prefix(const std::string &version); + void _format_json_entry(const tm &tm, const timespec ×pec, bool first_iteration, + const Stats &interval, bool checkpointing, double interval_secs); + void _format_json_suffix(); + void _check_latency_threshold(const Stats &interval, uint64_t latency_max); }; struct TableRuntime { diff --git a/src/third_party/wiredtiger/dist/stat_data.py b/src/third_party/wiredtiger/dist/stat_data.py index de5cde1f494..993f4ec5dfc 100644 --- a/src/third_party/wiredtiger/dist/stat_data.py +++ b/src/third_party/wiredtiger/dist/stat_data.py @@ -503,7 +503,6 @@ connection_stats = [ ########################################## StorageStat('flush_state_races', 'flush state races'), StorageStat('flush_tier', 'flush_tier operation calls'), - StorageStat('flush_tier_busy', 'flush_tier busy retries'), ########################################## # Thread Count statistics diff --git a/src/third_party/wiredtiger/ext/storage_sources/local_store/local_store.c b/src/third_party/wiredtiger/ext/storage_sources/local_store/local_store.c index 0f6a7cfe473..00c7929117a 100644 --- a/src/third_party/wiredtiger/ext/storage_sources/local_store/local_store.c +++ b/src/third_party/wiredtiger/ext/storage_sources/local_store/local_store.c @@ -68,6 +68,11 @@ typedef struct { pthread_rwlock_t file_handle_lock; /* + * Keep the number of references to this storage source. + */ + uint32_t reference_count; + + /* * Configuration values are set at startup. */ uint32_t delay_ms; /* Average length of delay when simulated */ @@ -129,7 +134,7 @@ static int local_writeable(LOCAL_STORAGE *, const char *name, bool *writeable); /* * Forward function declarations for storage source API implementation */ -static int local_exist(WT_FILE_SYSTEM *, WT_SESSION *, const char *, bool *); +static int local_add_reference(WT_STORAGE_SOURCE *); static int local_customize_file_system( WT_STORAGE_SOURCE *, WT_SESSION *, const char *, const char *, const char *, WT_FILE_SYSTEM **); static int local_flush( @@ -149,6 +154,7 @@ static int local_directory_list_internal( static int local_directory_list_single( WT_FILE_SYSTEM *, WT_SESSION *, const char *, const char *, char ***, uint32_t *); static int local_directory_list_free(WT_FILE_SYSTEM *, WT_SESSION *, char **, uint32_t); +static int local_exist(WT_FILE_SYSTEM *, WT_SESSION *, const char *, bool *); static int local_fs_terminate(WT_FILE_SYSTEM *, WT_SESSION *); static int local_open(WT_FILE_SYSTEM *, WT_SESSION *, const char *, WT_FS_OPEN_FILE_TYPE file_type, uint32_t, WT_FILE_HANDLE **); @@ -376,6 +382,27 @@ local_path(WT_FILE_SYSTEM *file_system, const char *dir, const char *name, char } /* + * local_add_reference -- + * Add a reference to the storage source so we can reference count to know when to really + * terminate. + */ +static int +local_add_reference(WT_STORAGE_SOURCE *storage_source) +{ + LOCAL_STORAGE *local; + + local = (LOCAL_STORAGE *)storage_source; + + /* + * Missing reference or overflow? + */ + if (local->reference_count == 0 || local->reference_count + 1 == 0) + return (EINVAL); + ++local->reference_count; + return (0); +} + +/* * local_customize_file_system -- * Return a customized file system to access the local storage source objects. */ @@ -1085,6 +1112,9 @@ local_terminate(WT_STORAGE_SOURCE *storage, WT_SESSION *session) ret = 0; local = (LOCAL_STORAGE *)storage; + if (--local->reference_count != 0) + return (0); + local->op_count++; /* @@ -1264,11 +1294,17 @@ wiredtiger_extension_init(WT_CONNECTION *connection, WT_CONFIG_ARG *config) * Allocate a local storage structure, with a WT_STORAGE structure as the first field, allowing * us to treat references to either type of structure as a reference to the other type. */ + local->storage_source.ss_add_reference = local_add_reference; local->storage_source.ss_customize_file_system = local_customize_file_system; local->storage_source.ss_flush = local_flush; local->storage_source.ss_flush_finish = local_flush_finish; local->storage_source.terminate = local_terminate; + /* + * The first reference is implied by the call to add_storage_source. + */ + local->reference_count = 1; + if ((ret = local_configure(local, config)) != 0) { free(local); return (ret); diff --git a/src/third_party/wiredtiger/import.data b/src/third_party/wiredtiger/import.data index 5a963156a53..b54ab79ab02 100644 --- a/src/third_party/wiredtiger/import.data +++ b/src/third_party/wiredtiger/import.data @@ -2,5 +2,5 @@ "vendor": "wiredtiger", "github": "wiredtiger/wiredtiger.git", "branch": "mongodb-5.0", - "commit": "b2dce5bb8f2bbecb704537eee9cff61d7dc106a0" + "commit": "e78819461f334671eef6773c93faff2e98c56cc0" } diff --git a/src/third_party/wiredtiger/src/conn/conn_api.c b/src/third_party/wiredtiger/src/conn/conn_api.c index 531d217d1bb..5804a4e34ce 100644 --- a/src/third_party/wiredtiger/src/conn/conn_api.c +++ b/src/third_party/wiredtiger/src/conn/conn_api.c @@ -716,6 +716,7 @@ __conn_get_storage_source( WT_CONNECTION_IMPL *conn; WT_DECL_RET; WT_NAMED_STORAGE_SOURCE *nstorage_source; + WT_STORAGE_SOURCE *storage_source; conn = (WT_CONNECTION_IMPL *)wt_conn; *storage_sourcep = NULL; @@ -723,7 +724,9 @@ __conn_get_storage_source( ret = EINVAL; TAILQ_FOREACH (nstorage_source, &conn->storagesrcqh, q) if (WT_STREQ(nstorage_source->name, name)) { - *storage_sourcep = nstorage_source->storage_source; + storage_source = nstorage_source->storage_source; + WT_RET(storage_source->ss_add_reference(storage_source)); + *storage_sourcep = storage_source; ret = 0; break; } diff --git a/src/third_party/wiredtiger/src/conn/conn_tiered.c b/src/third_party/wiredtiger/src/conn/conn_tiered.c index 90e3d778c72..916babf1f1b 100644 --- a/src/third_party/wiredtiger/src/conn/conn_tiered.c +++ b/src/third_party/wiredtiger/src/conn/conn_tiered.c @@ -90,7 +90,7 @@ __flush_tier_once(WT_SESSION_IMPL *session, uint32_t flags) if (WT_PREFIX_MATCH(key, "tiered:")) { __wt_verbose(session, WT_VERB_TIERED, "FLUSH_TIER_ONCE: %s %s", key, value); /* Is this instantiating every handle even if it is not opened or in use? */ - WT_ERR(__wt_session_get_dhandle(session, key, NULL, NULL, WT_DHANDLE_EXCLUSIVE)); + WT_ERR(__wt_session_get_dhandle(session, key, NULL, NULL, 0)); /* * When we call wt_tiered_switch the session->dhandle points to the tiered: entry and * the arg is the config string that is currently in the metadata. @@ -188,7 +188,7 @@ __tier_flush_meta( WT_ERR(__wt_meta_track_on(session)); tracking = true; - WT_ERR(__wt_session_get_dhandle(session, dhandle->name, NULL, NULL, WT_DHANDLE_EXCLUSIVE)); + WT_ERR(__wt_session_get_dhandle(session, dhandle->name, NULL, NULL, 0)); release = true; /* * Once the flush call succeeds we want to first remove the file: entry from the metadata and @@ -226,7 +226,6 @@ __wt_tier_do_flush( WT_DECL_RET; WT_FILE_SYSTEM *bucket_fs; WT_STORAGE_SOURCE *storage_source; - uint32_t msec, retry; const char *local_name, *obj_name; storage_source = tiered->bstorage->storage_source; @@ -241,21 +240,8 @@ __wt_tier_do_flush( WT_RET(storage_source->ss_flush( storage_source, &session->iface, bucket_fs, local_name, obj_name, NULL)); - /* - * Flushing the metadata grabs the data handle with exclusive access, and the data handle may be - * held by the thread that queues the flush tier work item. As a result, the handle may be busy, - * so retry as needed, up to a few seconds. - */ - for (msec = 10, retry = 0; msec < 3000; msec *= 2, retry++) { - if (retry != 0) - __wt_sleep(0, msec * WT_THOUSAND); - WT_WITH_CHECKPOINT_LOCK(session, - WT_WITH_SCHEMA_LOCK( - session, ret = __tier_flush_meta(session, tiered, local_uri, obj_uri))); - if (ret != EBUSY) - break; - WT_STAT_CONN_INCR(session, flush_tier_busy); - } + WT_WITH_CHECKPOINT_LOCK(session, + WT_WITH_SCHEMA_LOCK(session, ret = __tier_flush_meta(session, tiered, local_uri, obj_uri))); WT_RET(ret); /* diff --git a/src/third_party/wiredtiger/src/include/stat.h b/src/third_party/wiredtiger/src/include/stat.h index 5b14e4bc80e..6564d9d76e3 100644 --- a/src/third_party/wiredtiger/src/include/stat.h +++ b/src/third_party/wiredtiger/src/include/stat.h @@ -587,7 +587,6 @@ struct __wt_connection_stats { int64_t rec_split_stashed_bytes; int64_t rec_split_stashed_objects; int64_t flush_state_races; - int64_t flush_tier_busy; int64_t flush_tier; int64_t session_open; int64_t session_query_ts; diff --git a/src/third_party/wiredtiger/src/include/wiredtiger.in b/src/third_party/wiredtiger/src/include/wiredtiger.in index 75ac38e56d6..1b49a832407 100644 --- a/src/third_party/wiredtiger/src/include/wiredtiger.in +++ b/src/third_party/wiredtiger/src/include/wiredtiger.in @@ -2620,7 +2620,8 @@ struct __wt_connection { /*! * Get a storage source implementation. * - * Look up a storage source by name. + * Look up a storage source by name and return it. The returned storage source + * must be released by calling WT_STORAGE_SOURCE::terminate. * * @snippet ex_storage_source.c WT_STORAGE_SOURCE register * @@ -4765,6 +4766,17 @@ struct __wt_file_handle { */ struct __wt_storage_source { /*! + * A reference is added to the storage source. The reference is released by a + * call to WT_STORAGE_SOURCE::terminate. A reference is added as a side effect + * of calling WT_CONNECTION::get_storage_source. + * + * @errors + * + * @param storage_source the WT_STORAGE_SOURCE + */ + int (*ss_add_reference)(WT_STORAGE_SOURCE *storage_source); + + /*! * Create a customized file system to access the storage source * objects. * @@ -4849,8 +4861,11 @@ struct __wt_storage_source { const char *config); /*! - * A callback performed when the storage source is closed and will no - * longer be accessed by the WiredTiger database. + * A callback performed when the storage source or reference is closed + * and will no longer be used. The initial creation of the storage source + * counts as a reference, and each call to WT_STORAGE_SOURCE::add_reference + * increase the number of references. When all references are released, the + * storage source and any resources associated with it are released. * * This method is not required and should be set to NULL when not * required by the storage source implementation. @@ -5575,543 +5590,541 @@ extern int wiredtiger_extension_terminate(WT_CONNECTION *connection); #define WT_STAT_CONN_REC_SPLIT_STASHED_OBJECTS 1272 /*! session: flush state races */ #define WT_STAT_CONN_FLUSH_STATE_RACES 1273 -/*! session: flush_tier busy retries */ -#define WT_STAT_CONN_FLUSH_TIER_BUSY 1274 /*! session: flush_tier operation calls */ -#define WT_STAT_CONN_FLUSH_TIER 1275 +#define WT_STAT_CONN_FLUSH_TIER 1274 /*! session: open session count */ -#define WT_STAT_CONN_SESSION_OPEN 1276 +#define WT_STAT_CONN_SESSION_OPEN 1275 /*! session: session query timestamp calls */ -#define WT_STAT_CONN_SESSION_QUERY_TS 1277 +#define WT_STAT_CONN_SESSION_QUERY_TS 1276 /*! session: table alter failed calls */ -#define WT_STAT_CONN_SESSION_TABLE_ALTER_FAIL 1278 +#define WT_STAT_CONN_SESSION_TABLE_ALTER_FAIL 1277 /*! session: table alter successful calls */ -#define WT_STAT_CONN_SESSION_TABLE_ALTER_SUCCESS 1279 +#define WT_STAT_CONN_SESSION_TABLE_ALTER_SUCCESS 1278 /*! session: table alter unchanged and skipped */ -#define WT_STAT_CONN_SESSION_TABLE_ALTER_SKIP 1280 +#define WT_STAT_CONN_SESSION_TABLE_ALTER_SKIP 1279 /*! session: table compact failed calls */ -#define WT_STAT_CONN_SESSION_TABLE_COMPACT_FAIL 1281 +#define WT_STAT_CONN_SESSION_TABLE_COMPACT_FAIL 1280 /*! session: table compact successful calls */ -#define WT_STAT_CONN_SESSION_TABLE_COMPACT_SUCCESS 1282 +#define WT_STAT_CONN_SESSION_TABLE_COMPACT_SUCCESS 1281 /*! session: table create failed calls */ -#define WT_STAT_CONN_SESSION_TABLE_CREATE_FAIL 1283 +#define WT_STAT_CONN_SESSION_TABLE_CREATE_FAIL 1282 /*! session: table create successful calls */ -#define WT_STAT_CONN_SESSION_TABLE_CREATE_SUCCESS 1284 +#define WT_STAT_CONN_SESSION_TABLE_CREATE_SUCCESS 1283 /*! session: table drop failed calls */ -#define WT_STAT_CONN_SESSION_TABLE_DROP_FAIL 1285 +#define WT_STAT_CONN_SESSION_TABLE_DROP_FAIL 1284 /*! session: table drop successful calls */ -#define WT_STAT_CONN_SESSION_TABLE_DROP_SUCCESS 1286 +#define WT_STAT_CONN_SESSION_TABLE_DROP_SUCCESS 1285 /*! session: table rename failed calls */ -#define WT_STAT_CONN_SESSION_TABLE_RENAME_FAIL 1287 +#define WT_STAT_CONN_SESSION_TABLE_RENAME_FAIL 1286 /*! session: table rename successful calls */ -#define WT_STAT_CONN_SESSION_TABLE_RENAME_SUCCESS 1288 +#define WT_STAT_CONN_SESSION_TABLE_RENAME_SUCCESS 1287 /*! session: table salvage failed calls */ -#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_FAIL 1289 +#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_FAIL 1288 /*! session: table salvage successful calls */ -#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_SUCCESS 1290 +#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_SUCCESS 1289 /*! session: table truncate failed calls */ -#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_FAIL 1291 +#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_FAIL 1290 /*! session: table truncate successful calls */ -#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_SUCCESS 1292 +#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_SUCCESS 1291 /*! session: table verify failed calls */ -#define WT_STAT_CONN_SESSION_TABLE_VERIFY_FAIL 1293 +#define WT_STAT_CONN_SESSION_TABLE_VERIFY_FAIL 1292 /*! session: table verify successful calls */ -#define WT_STAT_CONN_SESSION_TABLE_VERIFY_SUCCESS 1294 +#define WT_STAT_CONN_SESSION_TABLE_VERIFY_SUCCESS 1293 /*! thread-state: active filesystem fsync calls */ -#define WT_STAT_CONN_THREAD_FSYNC_ACTIVE 1295 +#define WT_STAT_CONN_THREAD_FSYNC_ACTIVE 1294 /*! thread-state: active filesystem read calls */ -#define WT_STAT_CONN_THREAD_READ_ACTIVE 1296 +#define WT_STAT_CONN_THREAD_READ_ACTIVE 1295 /*! thread-state: active filesystem write calls */ -#define WT_STAT_CONN_THREAD_WRITE_ACTIVE 1297 +#define WT_STAT_CONN_THREAD_WRITE_ACTIVE 1296 /*! thread-yield: application thread time evicting (usecs) */ -#define WT_STAT_CONN_APPLICATION_EVICT_TIME 1298 +#define WT_STAT_CONN_APPLICATION_EVICT_TIME 1297 /*! thread-yield: application thread time waiting for cache (usecs) */ -#define WT_STAT_CONN_APPLICATION_CACHE_TIME 1299 +#define WT_STAT_CONN_APPLICATION_CACHE_TIME 1298 /*! * thread-yield: connection close blocked waiting for transaction state * stabilization */ -#define WT_STAT_CONN_TXN_RELEASE_BLOCKED 1300 +#define WT_STAT_CONN_TXN_RELEASE_BLOCKED 1299 /*! thread-yield: connection close yielded for lsm manager shutdown */ -#define WT_STAT_CONN_CONN_CLOSE_BLOCKED_LSM 1301 +#define WT_STAT_CONN_CONN_CLOSE_BLOCKED_LSM 1300 /*! thread-yield: data handle lock yielded */ -#define WT_STAT_CONN_DHANDLE_LOCK_BLOCKED 1302 +#define WT_STAT_CONN_DHANDLE_LOCK_BLOCKED 1301 /*! * thread-yield: get reference for page index and slot time sleeping * (usecs) */ -#define WT_STAT_CONN_PAGE_INDEX_SLOT_REF_BLOCKED 1303 +#define WT_STAT_CONN_PAGE_INDEX_SLOT_REF_BLOCKED 1302 /*! thread-yield: log server sync yielded for log write */ -#define WT_STAT_CONN_LOG_SERVER_SYNC_BLOCKED 1304 +#define WT_STAT_CONN_LOG_SERVER_SYNC_BLOCKED 1303 /*! thread-yield: page access yielded due to prepare state change */ -#define WT_STAT_CONN_PREPARED_TRANSITION_BLOCKED_PAGE 1305 +#define WT_STAT_CONN_PREPARED_TRANSITION_BLOCKED_PAGE 1304 /*! thread-yield: page acquire busy blocked */ -#define WT_STAT_CONN_PAGE_BUSY_BLOCKED 1306 +#define WT_STAT_CONN_PAGE_BUSY_BLOCKED 1305 /*! thread-yield: page acquire eviction blocked */ -#define WT_STAT_CONN_PAGE_FORCIBLE_EVICT_BLOCKED 1307 +#define WT_STAT_CONN_PAGE_FORCIBLE_EVICT_BLOCKED 1306 /*! thread-yield: page acquire locked blocked */ -#define WT_STAT_CONN_PAGE_LOCKED_BLOCKED 1308 +#define WT_STAT_CONN_PAGE_LOCKED_BLOCKED 1307 /*! thread-yield: page acquire read blocked */ -#define WT_STAT_CONN_PAGE_READ_BLOCKED 1309 +#define WT_STAT_CONN_PAGE_READ_BLOCKED 1308 /*! thread-yield: page acquire time sleeping (usecs) */ -#define WT_STAT_CONN_PAGE_SLEEP 1310 +#define WT_STAT_CONN_PAGE_SLEEP 1309 /*! * thread-yield: page delete rollback time sleeping for state change * (usecs) */ -#define WT_STAT_CONN_PAGE_DEL_ROLLBACK_BLOCKED 1311 +#define WT_STAT_CONN_PAGE_DEL_ROLLBACK_BLOCKED 1310 /*! thread-yield: page reconciliation yielded due to child modification */ -#define WT_STAT_CONN_CHILD_MODIFY_BLOCKED_PAGE 1312 +#define WT_STAT_CONN_CHILD_MODIFY_BLOCKED_PAGE 1311 /*! transaction: Number of prepared updates */ -#define WT_STAT_CONN_TXN_PREPARED_UPDATES 1313 +#define WT_STAT_CONN_TXN_PREPARED_UPDATES 1312 /*! transaction: Number of prepared updates committed */ -#define WT_STAT_CONN_TXN_PREPARED_UPDATES_COMMITTED 1314 +#define WT_STAT_CONN_TXN_PREPARED_UPDATES_COMMITTED 1313 /*! transaction: Number of prepared updates repeated on the same key */ -#define WT_STAT_CONN_TXN_PREPARED_UPDATES_KEY_REPEATED 1315 +#define WT_STAT_CONN_TXN_PREPARED_UPDATES_KEY_REPEATED 1314 /*! transaction: Number of prepared updates rolled back */ -#define WT_STAT_CONN_TXN_PREPARED_UPDATES_ROLLEDBACK 1316 +#define WT_STAT_CONN_TXN_PREPARED_UPDATES_ROLLEDBACK 1315 /*! transaction: prepared transactions */ -#define WT_STAT_CONN_TXN_PREPARE 1317 +#define WT_STAT_CONN_TXN_PREPARE 1316 /*! transaction: prepared transactions committed */ -#define WT_STAT_CONN_TXN_PREPARE_COMMIT 1318 +#define WT_STAT_CONN_TXN_PREPARE_COMMIT 1317 /*! transaction: prepared transactions currently active */ -#define WT_STAT_CONN_TXN_PREPARE_ACTIVE 1319 +#define WT_STAT_CONN_TXN_PREPARE_ACTIVE 1318 /*! transaction: prepared transactions rolled back */ -#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK 1320 +#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK 1319 /*! transaction: query timestamp calls */ -#define WT_STAT_CONN_TXN_QUERY_TS 1321 +#define WT_STAT_CONN_TXN_QUERY_TS 1320 /*! transaction: rollback to stable calls */ -#define WT_STAT_CONN_TXN_RTS 1322 +#define WT_STAT_CONN_TXN_RTS 1321 /*! transaction: rollback to stable pages visited */ -#define WT_STAT_CONN_TXN_RTS_PAGES_VISITED 1323 +#define WT_STAT_CONN_TXN_RTS_PAGES_VISITED 1322 /*! transaction: rollback to stable tree walk skipping pages */ -#define WT_STAT_CONN_TXN_RTS_TREE_WALK_SKIP_PAGES 1324 +#define WT_STAT_CONN_TXN_RTS_TREE_WALK_SKIP_PAGES 1323 /*! transaction: rollback to stable updates aborted */ -#define WT_STAT_CONN_TXN_RTS_UPD_ABORTED 1325 +#define WT_STAT_CONN_TXN_RTS_UPD_ABORTED 1324 /*! transaction: sessions scanned in each walk of concurrent sessions */ -#define WT_STAT_CONN_TXN_SESSIONS_WALKED 1326 +#define WT_STAT_CONN_TXN_SESSIONS_WALKED 1325 /*! transaction: set timestamp calls */ -#define WT_STAT_CONN_TXN_SET_TS 1327 +#define WT_STAT_CONN_TXN_SET_TS 1326 /*! transaction: set timestamp durable calls */ -#define WT_STAT_CONN_TXN_SET_TS_DURABLE 1328 +#define WT_STAT_CONN_TXN_SET_TS_DURABLE 1327 /*! transaction: set timestamp durable updates */ -#define WT_STAT_CONN_TXN_SET_TS_DURABLE_UPD 1329 +#define WT_STAT_CONN_TXN_SET_TS_DURABLE_UPD 1328 /*! transaction: set timestamp oldest calls */ -#define WT_STAT_CONN_TXN_SET_TS_OLDEST 1330 +#define WT_STAT_CONN_TXN_SET_TS_OLDEST 1329 /*! transaction: set timestamp oldest updates */ -#define WT_STAT_CONN_TXN_SET_TS_OLDEST_UPD 1331 +#define WT_STAT_CONN_TXN_SET_TS_OLDEST_UPD 1330 /*! transaction: set timestamp stable calls */ -#define WT_STAT_CONN_TXN_SET_TS_STABLE 1332 +#define WT_STAT_CONN_TXN_SET_TS_STABLE 1331 /*! transaction: set timestamp stable updates */ -#define WT_STAT_CONN_TXN_SET_TS_STABLE_UPD 1333 +#define WT_STAT_CONN_TXN_SET_TS_STABLE_UPD 1332 /*! transaction: transaction begins */ -#define WT_STAT_CONN_TXN_BEGIN 1334 +#define WT_STAT_CONN_TXN_BEGIN 1333 /*! transaction: transaction checkpoint currently running */ -#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING 1335 +#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING 1334 /*! * transaction: transaction checkpoint currently running for history * store file */ -#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING_HS 1336 +#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING_HS 1335 /*! transaction: transaction checkpoint generation */ -#define WT_STAT_CONN_TXN_CHECKPOINT_GENERATION 1337 +#define WT_STAT_CONN_TXN_CHECKPOINT_GENERATION 1336 /*! * transaction: transaction checkpoint history store file duration * (usecs) */ -#define WT_STAT_CONN_TXN_HS_CKPT_DURATION 1338 +#define WT_STAT_CONN_TXN_HS_CKPT_DURATION 1337 /*! transaction: transaction checkpoint max time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MAX 1339 +#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MAX 1338 /*! transaction: transaction checkpoint min time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MIN 1340 +#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MIN 1339 /*! * transaction: transaction checkpoint most recent duration for gathering * all handles (usecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION 1341 +#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION 1340 /*! * transaction: transaction checkpoint most recent duration for gathering * applied handles (usecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION_APPLY 1342 +#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION_APPLY 1341 /*! * transaction: transaction checkpoint most recent duration for gathering * skipped handles (usecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION_SKIP 1343 +#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION_SKIP 1342 /*! transaction: transaction checkpoint most recent handles applied */ -#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_APPLIED 1344 +#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_APPLIED 1343 /*! transaction: transaction checkpoint most recent handles skipped */ -#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_SKIPPED 1345 +#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_SKIPPED 1344 /*! transaction: transaction checkpoint most recent handles walked */ -#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_WALKED 1346 +#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_WALKED 1345 /*! transaction: transaction checkpoint most recent time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_RECENT 1347 +#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_RECENT 1346 /*! transaction: transaction checkpoint prepare currently running */ -#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_RUNNING 1348 +#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_RUNNING 1347 /*! transaction: transaction checkpoint prepare max time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_MAX 1349 +#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_MAX 1348 /*! transaction: transaction checkpoint prepare min time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_MIN 1350 +#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_MIN 1349 /*! transaction: transaction checkpoint prepare most recent time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_RECENT 1351 +#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_RECENT 1350 /*! transaction: transaction checkpoint prepare total time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_TOTAL 1352 +#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_TOTAL 1351 /*! transaction: transaction checkpoint scrub dirty target */ -#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TARGET 1353 +#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TARGET 1352 /*! transaction: transaction checkpoint scrub time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TIME 1354 +#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TIME 1353 /*! transaction: transaction checkpoint total time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_TOTAL 1355 +#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_TOTAL 1354 /*! transaction: transaction checkpoints */ -#define WT_STAT_CONN_TXN_CHECKPOINT 1356 +#define WT_STAT_CONN_TXN_CHECKPOINT 1355 /*! * transaction: transaction checkpoints skipped because database was * clean */ -#define WT_STAT_CONN_TXN_CHECKPOINT_SKIPPED 1357 +#define WT_STAT_CONN_TXN_CHECKPOINT_SKIPPED 1356 /*! transaction: transaction failures due to history store */ -#define WT_STAT_CONN_TXN_FAIL_CACHE 1358 +#define WT_STAT_CONN_TXN_FAIL_CACHE 1357 /*! * transaction: transaction fsync calls for checkpoint after allocating * the transaction ID */ -#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST 1359 +#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST 1358 /*! * transaction: transaction fsync duration for checkpoint after * allocating the transaction ID (usecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST_DURATION 1360 +#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST_DURATION 1359 /*! transaction: transaction range of IDs currently pinned */ -#define WT_STAT_CONN_TXN_PINNED_RANGE 1361 +#define WT_STAT_CONN_TXN_PINNED_RANGE 1360 /*! transaction: transaction range of IDs currently pinned by a checkpoint */ -#define WT_STAT_CONN_TXN_PINNED_CHECKPOINT_RANGE 1362 +#define WT_STAT_CONN_TXN_PINNED_CHECKPOINT_RANGE 1361 /*! transaction: transaction range of timestamps currently pinned */ -#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP 1363 +#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP 1362 /*! transaction: transaction range of timestamps pinned by a checkpoint */ -#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_CHECKPOINT 1364 +#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_CHECKPOINT 1363 /*! * transaction: transaction range of timestamps pinned by the oldest * active read timestamp */ -#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_READER 1365 +#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_READER 1364 /*! * transaction: transaction range of timestamps pinned by the oldest * timestamp */ -#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_OLDEST 1366 +#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_OLDEST 1365 /*! transaction: transaction read timestamp of the oldest active reader */ -#define WT_STAT_CONN_TXN_TIMESTAMP_OLDEST_ACTIVE_READ 1367 +#define WT_STAT_CONN_TXN_TIMESTAMP_OLDEST_ACTIVE_READ 1366 /*! transaction: transaction rollback to stable currently running */ -#define WT_STAT_CONN_TXN_ROLLBACK_TO_STABLE_RUNNING 1368 +#define WT_STAT_CONN_TXN_ROLLBACK_TO_STABLE_RUNNING 1367 /*! transaction: transaction sync calls */ -#define WT_STAT_CONN_TXN_SYNC 1369 +#define WT_STAT_CONN_TXN_SYNC 1368 /*! transaction: transaction walk of concurrent sessions */ -#define WT_STAT_CONN_TXN_WALK_SESSIONS 1370 +#define WT_STAT_CONN_TXN_WALK_SESSIONS 1369 /*! transaction: transactions committed */ -#define WT_STAT_CONN_TXN_COMMIT 1371 +#define WT_STAT_CONN_TXN_COMMIT 1370 /*! transaction: transactions rolled back */ -#define WT_STAT_CONN_TXN_ROLLBACK 1372 +#define WT_STAT_CONN_TXN_ROLLBACK 1371 /*! LSM: sleep for LSM checkpoint throttle */ -#define WT_STAT_CONN_LSM_CHECKPOINT_THROTTLE 1373 +#define WT_STAT_CONN_LSM_CHECKPOINT_THROTTLE 1372 /*! LSM: sleep for LSM merge throttle */ -#define WT_STAT_CONN_LSM_MERGE_THROTTLE 1374 +#define WT_STAT_CONN_LSM_MERGE_THROTTLE 1373 /*! cache: bytes currently in the cache */ -#define WT_STAT_CONN_CACHE_BYTES_INUSE 1375 +#define WT_STAT_CONN_CACHE_BYTES_INUSE 1374 /*! cache: bytes dirty in the cache cumulative */ -#define WT_STAT_CONN_CACHE_BYTES_DIRTY_TOTAL 1376 +#define WT_STAT_CONN_CACHE_BYTES_DIRTY_TOTAL 1375 /*! cache: bytes read into cache */ -#define WT_STAT_CONN_CACHE_BYTES_READ 1377 +#define WT_STAT_CONN_CACHE_BYTES_READ 1376 /*! cache: bytes written from cache */ -#define WT_STAT_CONN_CACHE_BYTES_WRITE 1378 +#define WT_STAT_CONN_CACHE_BYTES_WRITE 1377 /*! cache: checkpoint blocked page eviction */ -#define WT_STAT_CONN_CACHE_EVICTION_CHECKPOINT 1379 +#define WT_STAT_CONN_CACHE_EVICTION_CHECKPOINT 1378 /*! * cache: checkpoint of history store file blocked non-history store page * eviction */ -#define WT_STAT_CONN_CACHE_EVICTION_BLOCKED_CHECKPOINT_HS 1380 +#define WT_STAT_CONN_CACHE_EVICTION_BLOCKED_CHECKPOINT_HS 1379 /*! cache: eviction walk target pages histogram - 0-9 */ -#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT10 1381 +#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT10 1380 /*! cache: eviction walk target pages histogram - 10-31 */ -#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT32 1382 +#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT32 1381 /*! cache: eviction walk target pages histogram - 128 and higher */ -#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_GE128 1383 +#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_GE128 1382 /*! cache: eviction walk target pages histogram - 32-63 */ -#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT64 1384 +#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT64 1383 /*! cache: eviction walk target pages histogram - 64-128 */ -#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT128 1385 +#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT128 1384 /*! * cache: eviction walk target pages reduced due to history store cache * pressure */ -#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_REDUCED 1386 +#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_REDUCED 1385 /*! cache: eviction walks abandoned */ -#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ABANDONED 1387 +#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ABANDONED 1386 /*! cache: eviction walks gave up because they restarted their walk twice */ -#define WT_STAT_CONN_CACHE_EVICTION_WALKS_STOPPED 1388 +#define WT_STAT_CONN_CACHE_EVICTION_WALKS_STOPPED 1387 /*! * cache: eviction walks gave up because they saw too many pages and * found no candidates */ -#define WT_STAT_CONN_CACHE_EVICTION_WALKS_GAVE_UP_NO_TARGETS 1389 +#define WT_STAT_CONN_CACHE_EVICTION_WALKS_GAVE_UP_NO_TARGETS 1388 /*! * cache: eviction walks gave up because they saw too many pages and * found too few candidates */ -#define WT_STAT_CONN_CACHE_EVICTION_WALKS_GAVE_UP_RATIO 1390 +#define WT_STAT_CONN_CACHE_EVICTION_WALKS_GAVE_UP_RATIO 1389 /*! cache: eviction walks reached end of tree */ -#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ENDED 1391 +#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ENDED 1390 /*! cache: eviction walks restarted */ -#define WT_STAT_CONN_CACHE_EVICTION_WALK_RESTART 1392 +#define WT_STAT_CONN_CACHE_EVICTION_WALK_RESTART 1391 /*! cache: eviction walks started from root of tree */ -#define WT_STAT_CONN_CACHE_EVICTION_WALK_FROM_ROOT 1393 +#define WT_STAT_CONN_CACHE_EVICTION_WALK_FROM_ROOT 1392 /*! cache: eviction walks started from saved location in tree */ -#define WT_STAT_CONN_CACHE_EVICTION_WALK_SAVED_POS 1394 +#define WT_STAT_CONN_CACHE_EVICTION_WALK_SAVED_POS 1393 /*! cache: hazard pointer blocked page eviction */ -#define WT_STAT_CONN_CACHE_EVICTION_HAZARD 1395 +#define WT_STAT_CONN_CACHE_EVICTION_HAZARD 1394 /*! cache: history store table insert calls */ -#define WT_STAT_CONN_CACHE_HS_INSERT 1396 +#define WT_STAT_CONN_CACHE_HS_INSERT 1395 /*! cache: history store table insert calls that returned restart */ -#define WT_STAT_CONN_CACHE_HS_INSERT_RESTART 1397 +#define WT_STAT_CONN_CACHE_HS_INSERT_RESTART 1396 /*! * cache: history store table out-of-order resolved updates that lose * their durable timestamp */ -#define WT_STAT_CONN_CACHE_HS_ORDER_LOSE_DURABLE_TIMESTAMP 1398 +#define WT_STAT_CONN_CACHE_HS_ORDER_LOSE_DURABLE_TIMESTAMP 1397 /*! * cache: history store table out-of-order updates that were fixed up by * reinserting with the fixed timestamp */ -#define WT_STAT_CONN_CACHE_HS_ORDER_REINSERT 1399 +#define WT_STAT_CONN_CACHE_HS_ORDER_REINSERT 1398 /*! cache: history store table reads */ -#define WT_STAT_CONN_CACHE_HS_READ 1400 +#define WT_STAT_CONN_CACHE_HS_READ 1399 /*! cache: history store table reads missed */ -#define WT_STAT_CONN_CACHE_HS_READ_MISS 1401 +#define WT_STAT_CONN_CACHE_HS_READ_MISS 1400 /*! cache: history store table reads requiring squashed modifies */ -#define WT_STAT_CONN_CACHE_HS_READ_SQUASH 1402 +#define WT_STAT_CONN_CACHE_HS_READ_SQUASH 1401 /*! * cache: history store table truncation by rollback to stable to remove * an unstable update */ -#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE_RTS_UNSTABLE 1403 +#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE_RTS_UNSTABLE 1402 /*! * cache: history store table truncation by rollback to stable to remove * an update */ -#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE_RTS 1404 +#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE_RTS 1403 /*! cache: history store table truncation to remove an update */ -#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE 1405 +#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE 1404 /*! * cache: history store table truncation to remove range of updates due * to key being removed from the data page during reconciliation */ -#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE_ONPAGE_REMOVAL 1406 +#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE_ONPAGE_REMOVAL 1405 /*! * cache: history store table truncation to remove range of updates due * to out-of-order timestamp update on data page */ -#define WT_STAT_CONN_CACHE_HS_ORDER_REMOVE 1407 +#define WT_STAT_CONN_CACHE_HS_ORDER_REMOVE 1406 /*! cache: history store table writes requiring squashed modifies */ -#define WT_STAT_CONN_CACHE_HS_WRITE_SQUASH 1408 +#define WT_STAT_CONN_CACHE_HS_WRITE_SQUASH 1407 /*! cache: in-memory page passed criteria to be split */ -#define WT_STAT_CONN_CACHE_INMEM_SPLITTABLE 1409 +#define WT_STAT_CONN_CACHE_INMEM_SPLITTABLE 1408 /*! cache: in-memory page splits */ -#define WT_STAT_CONN_CACHE_INMEM_SPLIT 1410 +#define WT_STAT_CONN_CACHE_INMEM_SPLIT 1409 /*! cache: internal pages evicted */ -#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL 1411 +#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL 1410 /*! cache: internal pages split during eviction */ -#define WT_STAT_CONN_CACHE_EVICTION_SPLIT_INTERNAL 1412 +#define WT_STAT_CONN_CACHE_EVICTION_SPLIT_INTERNAL 1411 /*! cache: leaf pages split during eviction */ -#define WT_STAT_CONN_CACHE_EVICTION_SPLIT_LEAF 1413 +#define WT_STAT_CONN_CACHE_EVICTION_SPLIT_LEAF 1412 /*! cache: modified pages evicted */ -#define WT_STAT_CONN_CACHE_EVICTION_DIRTY 1414 +#define WT_STAT_CONN_CACHE_EVICTION_DIRTY 1413 /*! cache: overflow pages read into cache */ -#define WT_STAT_CONN_CACHE_READ_OVERFLOW 1415 +#define WT_STAT_CONN_CACHE_READ_OVERFLOW 1414 /*! cache: page split during eviction deepened the tree */ -#define WT_STAT_CONN_CACHE_EVICTION_DEEPEN 1416 +#define WT_STAT_CONN_CACHE_EVICTION_DEEPEN 1415 /*! cache: page written requiring history store records */ -#define WT_STAT_CONN_CACHE_WRITE_HS 1417 +#define WT_STAT_CONN_CACHE_WRITE_HS 1416 /*! cache: pages read into cache */ -#define WT_STAT_CONN_CACHE_READ 1418 +#define WT_STAT_CONN_CACHE_READ 1417 /*! cache: pages read into cache after truncate */ -#define WT_STAT_CONN_CACHE_READ_DELETED 1419 +#define WT_STAT_CONN_CACHE_READ_DELETED 1418 /*! cache: pages read into cache after truncate in prepare state */ -#define WT_STAT_CONN_CACHE_READ_DELETED_PREPARED 1420 +#define WT_STAT_CONN_CACHE_READ_DELETED_PREPARED 1419 /*! cache: pages requested from the cache */ -#define WT_STAT_CONN_CACHE_PAGES_REQUESTED 1421 +#define WT_STAT_CONN_CACHE_PAGES_REQUESTED 1420 /*! cache: pages seen by eviction walk */ -#define WT_STAT_CONN_CACHE_EVICTION_PAGES_SEEN 1422 +#define WT_STAT_CONN_CACHE_EVICTION_PAGES_SEEN 1421 /*! cache: pages written from cache */ -#define WT_STAT_CONN_CACHE_WRITE 1423 +#define WT_STAT_CONN_CACHE_WRITE 1422 /*! cache: pages written requiring in-memory restoration */ -#define WT_STAT_CONN_CACHE_WRITE_RESTORE 1424 +#define WT_STAT_CONN_CACHE_WRITE_RESTORE 1423 /*! cache: tracked dirty bytes in the cache */ -#define WT_STAT_CONN_CACHE_BYTES_DIRTY 1425 +#define WT_STAT_CONN_CACHE_BYTES_DIRTY 1424 /*! cache: unmodified pages evicted */ -#define WT_STAT_CONN_CACHE_EVICTION_CLEAN 1426 +#define WT_STAT_CONN_CACHE_EVICTION_CLEAN 1425 /*! checkpoint-cleanup: pages added for eviction */ -#define WT_STAT_CONN_CC_PAGES_EVICT 1427 +#define WT_STAT_CONN_CC_PAGES_EVICT 1426 /*! checkpoint-cleanup: pages removed */ -#define WT_STAT_CONN_CC_PAGES_REMOVED 1428 +#define WT_STAT_CONN_CC_PAGES_REMOVED 1427 /*! checkpoint-cleanup: pages skipped during tree walk */ -#define WT_STAT_CONN_CC_PAGES_WALK_SKIPPED 1429 +#define WT_STAT_CONN_CC_PAGES_WALK_SKIPPED 1428 /*! checkpoint-cleanup: pages visited */ -#define WT_STAT_CONN_CC_PAGES_VISITED 1430 +#define WT_STAT_CONN_CC_PAGES_VISITED 1429 /*! cursor: Total number of entries skipped by cursor next calls */ -#define WT_STAT_CONN_CURSOR_NEXT_SKIP_TOTAL 1431 +#define WT_STAT_CONN_CURSOR_NEXT_SKIP_TOTAL 1430 /*! cursor: Total number of entries skipped by cursor prev calls */ -#define WT_STAT_CONN_CURSOR_PREV_SKIP_TOTAL 1432 +#define WT_STAT_CONN_CURSOR_PREV_SKIP_TOTAL 1431 /*! * cursor: Total number of entries skipped to position the history store * cursor */ -#define WT_STAT_CONN_CURSOR_SKIP_HS_CUR_POSITION 1433 +#define WT_STAT_CONN_CURSOR_SKIP_HS_CUR_POSITION 1432 /*! * cursor: Total number of times a search near has exited due to prefix * config */ -#define WT_STAT_CONN_CURSOR_SEARCH_NEAR_PREFIX_FAST_PATHS 1434 +#define WT_STAT_CONN_CURSOR_SEARCH_NEAR_PREFIX_FAST_PATHS 1433 /*! * cursor: cursor next calls that skip due to a globally visible history * store tombstone */ -#define WT_STAT_CONN_CURSOR_NEXT_HS_TOMBSTONE 1435 +#define WT_STAT_CONN_CURSOR_NEXT_HS_TOMBSTONE 1434 /*! * cursor: cursor next calls that skip greater than or equal to 100 * entries */ -#define WT_STAT_CONN_CURSOR_NEXT_SKIP_GE_100 1436 +#define WT_STAT_CONN_CURSOR_NEXT_SKIP_GE_100 1435 /*! cursor: cursor next calls that skip less than 100 entries */ -#define WT_STAT_CONN_CURSOR_NEXT_SKIP_LT_100 1437 +#define WT_STAT_CONN_CURSOR_NEXT_SKIP_LT_100 1436 /*! * cursor: cursor prev calls that skip due to a globally visible history * store tombstone */ -#define WT_STAT_CONN_CURSOR_PREV_HS_TOMBSTONE 1438 +#define WT_STAT_CONN_CURSOR_PREV_HS_TOMBSTONE 1437 /*! * cursor: cursor prev calls that skip greater than or equal to 100 * entries */ -#define WT_STAT_CONN_CURSOR_PREV_SKIP_GE_100 1439 +#define WT_STAT_CONN_CURSOR_PREV_SKIP_GE_100 1438 /*! cursor: cursor prev calls that skip less than 100 entries */ -#define WT_STAT_CONN_CURSOR_PREV_SKIP_LT_100 1440 +#define WT_STAT_CONN_CURSOR_PREV_SKIP_LT_100 1439 /*! cursor: open cursor count */ -#define WT_STAT_CONN_CURSOR_OPEN_COUNT 1441 +#define WT_STAT_CONN_CURSOR_OPEN_COUNT 1440 /*! reconciliation: approximate byte size of timestamps in pages written */ -#define WT_STAT_CONN_REC_TIME_WINDOW_BYTES_TS 1442 +#define WT_STAT_CONN_REC_TIME_WINDOW_BYTES_TS 1441 /*! * reconciliation: approximate byte size of transaction IDs in pages * written */ -#define WT_STAT_CONN_REC_TIME_WINDOW_BYTES_TXN 1443 +#define WT_STAT_CONN_REC_TIME_WINDOW_BYTES_TXN 1442 /*! reconciliation: fast-path pages deleted */ -#define WT_STAT_CONN_REC_PAGE_DELETE_FAST 1444 +#define WT_STAT_CONN_REC_PAGE_DELETE_FAST 1443 /*! reconciliation: page reconciliation calls */ -#define WT_STAT_CONN_REC_PAGES 1445 +#define WT_STAT_CONN_REC_PAGES 1444 /*! reconciliation: page reconciliation calls for eviction */ -#define WT_STAT_CONN_REC_PAGES_EVICTION 1446 +#define WT_STAT_CONN_REC_PAGES_EVICTION 1445 /*! reconciliation: pages deleted */ -#define WT_STAT_CONN_REC_PAGE_DELETE 1447 +#define WT_STAT_CONN_REC_PAGE_DELETE 1446 /*! * reconciliation: pages written including an aggregated newest start * durable timestamp */ -#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_START_DURABLE_TS 1448 +#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_START_DURABLE_TS 1447 /*! * reconciliation: pages written including an aggregated newest stop * durable timestamp */ -#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_DURABLE_TS 1449 +#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_DURABLE_TS 1448 /*! * reconciliation: pages written including an aggregated newest stop * timestamp */ -#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_TS 1450 +#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_TS 1449 /*! * reconciliation: pages written including an aggregated newest stop * transaction ID */ -#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_TXN 1451 +#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_TXN 1450 /*! * reconciliation: pages written including an aggregated newest * transaction ID */ -#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_TXN 1452 +#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_TXN 1451 /*! * reconciliation: pages written including an aggregated oldest start * timestamp */ -#define WT_STAT_CONN_REC_TIME_AGGR_OLDEST_START_TS 1453 +#define WT_STAT_CONN_REC_TIME_AGGR_OLDEST_START_TS 1452 /*! reconciliation: pages written including an aggregated prepare */ -#define WT_STAT_CONN_REC_TIME_AGGR_PREPARED 1454 +#define WT_STAT_CONN_REC_TIME_AGGR_PREPARED 1453 /*! * reconciliation: pages written including at least one start durable * timestamp */ -#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_DURABLE_START_TS 1455 +#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_DURABLE_START_TS 1454 /*! * reconciliation: pages written including at least one start transaction * ID */ -#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_START_TXN 1456 +#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_START_TXN 1455 /*! * reconciliation: pages written including at least one stop durable * timestamp */ -#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_DURABLE_STOP_TS 1457 +#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_DURABLE_STOP_TS 1456 /*! reconciliation: pages written including at least one stop timestamp */ -#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_STOP_TS 1458 +#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_STOP_TS 1457 /*! * reconciliation: pages written including at least one stop transaction * ID */ -#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_STOP_TXN 1459 +#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_STOP_TXN 1458 /*! reconciliation: records written including a start durable timestamp */ -#define WT_STAT_CONN_REC_TIME_WINDOW_DURABLE_START_TS 1460 +#define WT_STAT_CONN_REC_TIME_WINDOW_DURABLE_START_TS 1459 /*! reconciliation: records written including a start timestamp */ -#define WT_STAT_CONN_REC_TIME_WINDOW_START_TS 1461 +#define WT_STAT_CONN_REC_TIME_WINDOW_START_TS 1460 /*! reconciliation: records written including a start transaction ID */ -#define WT_STAT_CONN_REC_TIME_WINDOW_START_TXN 1462 +#define WT_STAT_CONN_REC_TIME_WINDOW_START_TXN 1461 /*! reconciliation: records written including a stop durable timestamp */ -#define WT_STAT_CONN_REC_TIME_WINDOW_DURABLE_STOP_TS 1463 +#define WT_STAT_CONN_REC_TIME_WINDOW_DURABLE_STOP_TS 1462 /*! reconciliation: records written including a stop timestamp */ -#define WT_STAT_CONN_REC_TIME_WINDOW_STOP_TS 1464 +#define WT_STAT_CONN_REC_TIME_WINDOW_STOP_TS 1463 /*! reconciliation: records written including a stop transaction ID */ -#define WT_STAT_CONN_REC_TIME_WINDOW_STOP_TXN 1465 +#define WT_STAT_CONN_REC_TIME_WINDOW_STOP_TXN 1464 /*! session: tiered operations dequeued and processed */ -#define WT_STAT_CONN_TIERED_WORK_UNITS_DEQUEUED 1466 +#define WT_STAT_CONN_TIERED_WORK_UNITS_DEQUEUED 1465 /*! session: tiered operations scheduled */ -#define WT_STAT_CONN_TIERED_WORK_UNITS_CREATED 1467 +#define WT_STAT_CONN_TIERED_WORK_UNITS_CREATED 1466 /*! session: tiered storage local retention time (secs) */ -#define WT_STAT_CONN_TIERED_RETENTION 1468 +#define WT_STAT_CONN_TIERED_RETENTION 1467 /*! session: tiered storage object size */ -#define WT_STAT_CONN_TIERED_OBJECT_SIZE 1469 +#define WT_STAT_CONN_TIERED_OBJECT_SIZE 1468 /*! transaction: race to read prepared update retry */ -#define WT_STAT_CONN_TXN_READ_RACE_PREPARE_UPDATE 1470 +#define WT_STAT_CONN_TXN_READ_RACE_PREPARE_UPDATE 1469 /*! * transaction: rollback to stable history store records with stop * timestamps older than newer records */ -#define WT_STAT_CONN_TXN_RTS_HS_STOP_OLDER_THAN_NEWER_START 1471 +#define WT_STAT_CONN_TXN_RTS_HS_STOP_OLDER_THAN_NEWER_START 1470 /*! transaction: rollback to stable inconsistent checkpoint */ -#define WT_STAT_CONN_TXN_RTS_INCONSISTENT_CKPT 1472 +#define WT_STAT_CONN_TXN_RTS_INCONSISTENT_CKPT 1471 /*! transaction: rollback to stable keys removed */ -#define WT_STAT_CONN_TXN_RTS_KEYS_REMOVED 1473 +#define WT_STAT_CONN_TXN_RTS_KEYS_REMOVED 1472 /*! transaction: rollback to stable keys restored */ -#define WT_STAT_CONN_TXN_RTS_KEYS_RESTORED 1474 +#define WT_STAT_CONN_TXN_RTS_KEYS_RESTORED 1473 /*! transaction: rollback to stable restored tombstones from history store */ -#define WT_STAT_CONN_TXN_RTS_HS_RESTORE_TOMBSTONES 1475 +#define WT_STAT_CONN_TXN_RTS_HS_RESTORE_TOMBSTONES 1474 /*! transaction: rollback to stable restored updates from history store */ -#define WT_STAT_CONN_TXN_RTS_HS_RESTORE_UPDATES 1476 +#define WT_STAT_CONN_TXN_RTS_HS_RESTORE_UPDATES 1475 /*! transaction: rollback to stable sweeping history store keys */ -#define WT_STAT_CONN_TXN_RTS_SWEEP_HS_KEYS 1477 +#define WT_STAT_CONN_TXN_RTS_SWEEP_HS_KEYS 1476 /*! transaction: rollback to stable updates removed from history store */ -#define WT_STAT_CONN_TXN_RTS_HS_REMOVED 1478 +#define WT_STAT_CONN_TXN_RTS_HS_REMOVED 1477 /*! transaction: transaction checkpoints due to obsolete pages */ -#define WT_STAT_CONN_TXN_CHECKPOINT_OBSOLETE_APPLIED 1479 +#define WT_STAT_CONN_TXN_CHECKPOINT_OBSOLETE_APPLIED 1478 /*! transaction: update conflicts */ -#define WT_STAT_CONN_TXN_UPDATE_CONFLICT 1480 +#define WT_STAT_CONN_TXN_UPDATE_CONFLICT 1479 /*! * @} diff --git a/src/third_party/wiredtiger/src/support/stat.c b/src/third_party/wiredtiger/src/support/stat.c index 912e00945f5..313d1c39749 100644 --- a/src/third_party/wiredtiger/src/support/stat.c +++ b/src/third_party/wiredtiger/src/support/stat.c @@ -1250,7 +1250,6 @@ static const char *const __stats_connection_desc[] = { "reconciliation: split bytes currently awaiting free", "reconciliation: split objects currently awaiting free", "session: flush state races", - "session: flush_tier busy retries", "session: flush_tier operation calls", "session: open session count", "session: session query timestamp calls", @@ -1776,7 +1775,6 @@ __wt_stat_connection_clear_single(WT_CONNECTION_STATS *stats) /* not clearing rec_split_stashed_bytes */ /* not clearing rec_split_stashed_objects */ stats->flush_state_races = 0; - stats->flush_tier_busy = 0; stats->flush_tier = 0; /* not clearing session_open */ stats->session_query_ts = 0; @@ -2294,7 +2292,6 @@ __wt_stat_connection_aggregate(WT_CONNECTION_STATS **from, WT_CONNECTION_STATS * to->rec_split_stashed_bytes += WT_STAT_READ(from, rec_split_stashed_bytes); to->rec_split_stashed_objects += WT_STAT_READ(from, rec_split_stashed_objects); to->flush_state_races += WT_STAT_READ(from, flush_state_races); - to->flush_tier_busy += WT_STAT_READ(from, flush_tier_busy); to->flush_tier += WT_STAT_READ(from, flush_tier); to->session_open += WT_STAT_READ(from, session_open); to->session_query_ts += WT_STAT_READ(from, session_query_ts); diff --git a/src/third_party/wiredtiger/src/txn/txn_timestamp.c b/src/third_party/wiredtiger/src/txn/txn_timestamp.c index 6acd265fd2d..9fc79a78d72 100644 --- a/src/third_party/wiredtiger/src/txn/txn_timestamp.c +++ b/src/third_party/wiredtiger/src/txn/txn_timestamp.c @@ -187,10 +187,11 @@ __txn_global_query_timestamp(WT_SESSION_IMPL *session, wt_timestamp_t *tsp, cons */ if (ts == WT_TS_NONE) return (WT_NOTFOUND); - } else if (WT_STRING_MATCH("last_checkpoint", cval.str, cval.len)) - /* Read-only value forever. No lock needed. */ + } else if (WT_STRING_MATCH("last_checkpoint", cval.str, cval.len)) { + /* Read-only value forever. Make sure we don't used a cached version. */ + WT_BARRIER(); ts = txn_global->last_ckpt_timestamp; - else if (WT_STRING_MATCH("oldest", cval.str, cval.len)) { + } else if (WT_STRING_MATCH("oldest", cval.str, cval.len)) { if (!txn_global->has_oldest_timestamp) return (WT_NOTFOUND); ts = txn_global->oldest_timestamp; diff --git a/src/third_party/wiredtiger/test/evergreen.yml b/src/third_party/wiredtiger/test/evergreen.yml index d58344439d2..7f21ab9ca59 100755 --- a/src/third_party/wiredtiger/test/evergreen.yml +++ b/src/third_party/wiredtiger/test/evergreen.yml @@ -1775,21 +1775,6 @@ tasks: ${test_env_vars|} test/fops/t fi - - name: million-collection-test - commands: - - func: "get project" - - func: "fetch mongo-tests repo" - - command: shell.exec - params: - working_dir: mongo-tests - script: | - sudo su - set -o errexit - set -o verbose - ulimit -n 1000000 - ulimit -c unlimited - largescale/run-million-collection-test.sh . - - name: compatibility-test-for-newer-releases commands: - func: "get project" @@ -2742,14 +2727,6 @@ buildvariants: - name: long-test - name: configure-combinations -- name: large-scale-tests - display_name: "~ Large scale tests" - batchtime: 1440 # 1 day - run_on: - - rhel80-build - tasks: - - name: million-collection-test - - name: code-statistics display_name: "Code statistics" batchtime: 1440 # 1 day diff --git a/src/third_party/wiredtiger/test/suite/test_tiered02.py b/src/third_party/wiredtiger/test/suite/test_tiered02.py index 61f0ede77b5..aafff2161a9 100755 --- a/src/third_party/wiredtiger/test/suite/test_tiered02.py +++ b/src/third_party/wiredtiger/test/suite/test_tiered02.py @@ -122,6 +122,8 @@ class test_tiered02(wttest.WiredTigerTestCase): self.progress('populate') ds.populate() ds.check() + self.progress('open extra cursor on ' + self.uri) + cursor = self.session.open_cursor(self.uri, None, None) self.progress('checkpoint') self.session.checkpoint() @@ -146,6 +148,7 @@ class test_tiered02(wttest.WiredTigerTestCase): self.progress('populate') ds.populate() ds.check() + cursor.close() self.progress('close_conn') self.close_conn() diff --git a/src/third_party/wiredtiger/test/suite/test_tiered06.py b/src/third_party/wiredtiger/test/suite/test_tiered06.py index c797936a82b..d1eb9feae6f 100755 --- a/src/third_party/wiredtiger/test/suite/test_tiered06.py +++ b/src/third_party/wiredtiger/test/suite/test_tiered06.py @@ -47,14 +47,7 @@ class test_tiered06(wttest.WiredTigerTestCase): pdb.set_trace() def get_local_storage_source(self): - local = self.conn.get_storage_source('local_store') - - # Note: do not call local.terminate() . - # Since the local_storage extension has been loaded as a consequence of the - # wiredtiger_open call, WiredTiger already knows to call terminate when the connection - # closes. Calling it twice would attempt to free the same memory twice. - local.terminate = None - return local + return self.conn.get_storage_source('local_store') def test_local_basic(self): # Test some basic functionality of the storage source API, calling @@ -133,6 +126,7 @@ class test_tiered06(wttest.WiredTigerTestCase): self.assertEquals(fs.fs_directory_list(session, '', ''), ['foobar']) fs.terminate(session) + local.terminate(session) def test_local_write_read(self): # Write and read to a file non-sequentially. @@ -191,6 +185,7 @@ class test_tiered06(wttest.WiredTigerTestCase): else: self.assertEquals(in_block, a_block) fh.close(session) + local.terminate(session) def create_with_fs(self, fs, fname): session = self.session @@ -347,5 +342,12 @@ class test_tiered06(wttest.WiredTigerTestCase): self.check_dirlist(fs1, 'be', ['beagle']) self.check_dirlist(fs1, 'x', []) + # Terminate just one of the custom file systems. + # We should be able to terminate file systems, but we should + # also be able to terminate the storage source without terminating + # all the file systems we created. + fs1.terminate(session) + local.terminate(session) + if __name__ == '__main__': wttest.run() |