diff options
Diffstat (limited to 'src/third_party')
15 files changed, 44 insertions, 239 deletions
diff --git a/src/third_party/wiredtiger/dist/s_define.list b/src/third_party/wiredtiger/dist/s_define.list index 4040226b9ce..d79519f70ec 100644 --- a/src/third_party/wiredtiger/dist/s_define.list +++ b/src/third_party/wiredtiger/dist/s_define.list @@ -90,7 +90,6 @@ WT_TXN_UPDATE WT_UPDATE_SIZE WT_USE_OPENAT WT_VERBOSE_CATEGORY_DEFAULT -WT_VERBOSE_DEBUG WT_VERBOSE_LEVEL_DEFAULT WT_WITH_LOCK_NOWAIT WT_WITH_LOCK_WAIT diff --git a/src/third_party/wiredtiger/ext/storage_sources/s3_store/s3_log_system.h b/src/third_party/wiredtiger/ext/storage_sources/s3_store/s3_log_system.h index 3e6b2c42e21..5542b1b3bc9 100644 --- a/src/third_party/wiredtiger/ext/storage_sources/s3_store/s3_log_system.h +++ b/src/third_party/wiredtiger/ext/storage_sources/s3_store/s3_log_system.h @@ -43,11 +43,7 @@ static const std::map<int32_t, Aws::Utils::Logging::LogLevel> verbosityMapping = {WT_VERBOSE_WARNING, Aws::Utils::Logging::LogLevel::Error}, {WT_VERBOSE_WARNING, Aws::Utils::Logging::LogLevel::Warn}, {WT_VERBOSE_INFO, Aws::Utils::Logging::LogLevel::Info}, - {WT_VERBOSE_DEBUG_1, Aws::Utils::Logging::LogLevel::Debug}, - {WT_VERBOSE_DEBUG_2, Aws::Utils::Logging::LogLevel::Debug}, - {WT_VERBOSE_DEBUG_3, Aws::Utils::Logging::LogLevel::Debug}, - {WT_VERBOSE_DEBUG_4, Aws::Utils::Logging::LogLevel::Debug}, - {WT_VERBOSE_DEBUG_5, Aws::Utils::Logging::LogLevel::Trace}}; + {WT_VERBOSE_DEBUG, Aws::Utils::Logging::LogLevel::Debug}}; // Provides the S3 Store with a logger implementation that redirects the generated logs to // WiredTiger's logging streams. This class implements AWS's LogSystemInterface class, an interface @@ -77,7 +73,7 @@ class S3LogSystem : public Aws::Utils::Logging::LogSystemInterface { void LogDebugMessage(const std::string &message) const { - LogVerboseMessage(WT_VERBOSE_DEBUG_1, message); + LogVerboseMessage(WT_VERBOSE_DEBUG, message); } // Sets the WiredTiger Extension's verbosity level and matches the AWS log levels diff --git a/src/third_party/wiredtiger/ext/storage_sources/s3_store/s3_storage_source.cpp b/src/third_party/wiredtiger/ext/storage_sources/s3_store/s3_storage_source.cpp index 4010c5bcf99..4b66197845a 100644 --- a/src/third_party/wiredtiger/ext/storage_sources/s3_store/s3_storage_source.cpp +++ b/src/third_party/wiredtiger/ext/storage_sources/s3_store/s3_storage_source.cpp @@ -869,7 +869,7 @@ wiredtiger_extension_init(WT_CONNECTION *connection, WT_CONFIG_ARG *config) s3->verbose = WT_VERBOSE_ERROR; s3->log = Aws::MakeShared<S3LogSystem>("storage", s3->wtApi, s3->verbose); - if (ret == 0 && v.val >= WT_VERBOSE_ERROR && v.val <= WT_VERBOSE_DEBUG_5) { + if (ret == 0 && v.val >= WT_VERBOSE_ERROR && v.val <= WT_VERBOSE_DEBUG) { s3->verbose = v.val; s3->log->SetWtVerbosityLevel(s3->verbose); } else if (ret != WT_NOTFOUND) { diff --git a/src/third_party/wiredtiger/import.data b/src/third_party/wiredtiger/import.data index 220e7132dfa..ba4cd44e80e 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-master", - "commit": "e989c881bfe90086b2341aa8837739f53b0f24d2" + "commit": "ee9edd2f225102800d0a6c29cda1f53eb35c20c3" } diff --git a/src/third_party/wiredtiger/src/block/block_compact.c b/src/third_party/wiredtiger/src/block/block_compact.c index a033e5cefa8..098832cbfb6 100644 --- a/src/third_party/wiredtiger/src/block/block_compact.c +++ b/src/third_party/wiredtiger/src/block/block_compact.c @@ -42,7 +42,7 @@ __wt_block_compact_end(WT_SESSION_IMPL *session, WT_BLOCK *block) __wt_block_configure_first_fit(block, false); /* Dump the results of the compaction pass. */ - if (WT_VERBOSE_LEVEL_ISSET(session, WT_VERB_COMPACT, WT_VERBOSE_DEBUG_1)) { + if (WT_VERBOSE_LEVEL_ISSET(session, WT_VERB_COMPACT, WT_VERBOSE_DEBUG)) { __wt_spin_lock(session, &block->live_lock); __block_dump_file_stat(session, block, false); __wt_spin_unlock(session, &block->live_lock); @@ -77,7 +77,7 @@ __wt_block_compact_progress(WT_SESSION_IMPL *session, WT_BLOCK *block, u_int *ms struct timespec cur_time; uint64_t time_diff; - if (!WT_VERBOSE_LEVEL_ISSET(session, WT_VERB_COMPACT_PROGRESS, WT_VERBOSE_DEBUG_1)) + if (!WT_VERBOSE_LEVEL_ISSET(session, WT_VERB_COMPACT_PROGRESS, WT_VERBOSE_DEBUG)) return; __wt_epoch(session, &cur_time); @@ -121,7 +121,7 @@ __wt_block_compact_skip(WT_SESSION_IMPL *session, WT_BLOCK *block, bool *skipp) __wt_spin_lock(session, &block->live_lock); /* Dump the current state of the file. */ - if (WT_VERBOSE_LEVEL_ISSET(session, WT_VERB_COMPACT, WT_VERBOSE_DEBUG_1)) + if (WT_VERBOSE_LEVEL_ISSET(session, WT_VERB_COMPACT, WT_VERBOSE_DEBUG)) __block_dump_file_stat(session, block, true); /* Sum the available bytes in the initial 80% and 90% of the file. */ diff --git a/src/third_party/wiredtiger/src/block/block_ext.c b/src/third_party/wiredtiger/src/block/block_ext.c index 17357c21958..a4451ea00e0 100644 --- a/src/third_party/wiredtiger/src/block/block_ext.c +++ b/src/third_party/wiredtiger/src/block/block_ext.c @@ -1353,7 +1353,7 @@ __block_extlist_dump(WT_SESSION_IMPL *session, WT_BLOCK *block, WT_EXTLIST *el, if (block->verify_layout) level = WT_VERBOSE_NOTICE; else - level = WT_VERBOSE_DEBUG_1; + level = WT_VERBOSE_DEBUG; __wt_verbose_level(session, WT_VERB_BLOCK, level, "%s extent list %s, %" PRIu32 " entries, %s bytes", tag, el->name, el->entries, __wt_buf_set_size(session, el->bytes, true, t1)); diff --git a/src/third_party/wiredtiger/src/conn/conn_api.c b/src/third_party/wiredtiger/src/conn/conn_api.c index 38bd79e6230..ddeb8719590 100644 --- a/src/third_party/wiredtiger/src/conn/conn_api.c +++ b/src/third_party/wiredtiger/src/conn/conn_api.c @@ -2141,13 +2141,13 @@ __wt_verbose_config(WT_SESSION_IMPL *session, const char *cfg[], bool reconfig) else if (sval.type == WT_CONFIG_ITEM_BOOL && sval.len == 0) /* * If no value is associated with the event (i.e passing verbose=[checkpoint]), default - * the event to WT_VERBOSE_DEBUG_1. Correspondingly, all legacy uses of '__wt_verbose', + * the event to WT_VERBOSE_DEBUG. Correspondingly, all legacy uses of '__wt_verbose', * being messages without an explicit verbosity level, will default to - * 'WT_VERBOSE_DEBUG_1'. + * 'WT_VERBOSE_DEBUG'. */ - conn->verbose[ft->flag] = WT_VERBOSE_DEBUG_1; + conn->verbose[ft->flag] = WT_VERBOSE_DEBUG; else if (sval.type == WT_CONFIG_ITEM_NUM && sval.val >= WT_VERBOSE_INFO && - sval.val <= WT_VERBOSE_DEBUG_5) + sval.val <= WT_VERBOSE_DEBUG) conn->verbose[ft->flag] = (WT_VERBOSE_LEVEL)sval.val; else /* diff --git a/src/third_party/wiredtiger/src/evict/evict_lru.c b/src/third_party/wiredtiger/src/evict/evict_lru.c index 63fa232bd39..fd76f2b5aa1 100644 --- a/src/third_party/wiredtiger/src/evict/evict_lru.c +++ b/src/third_party/wiredtiger/src/evict/evict_lru.c @@ -461,9 +461,9 @@ __evict_server(WT_SESSION_IMPL *session, bool *did_work) #ifdef HAVE_DIAGNOSTIC /* Enable extra logs 20ms before timing out. */ if (!verbose_timeout_flags && time_diff_ms > WT_CACHE_STUCK_TIMEOUT_MS - 20) { - WT_SET_VERBOSE_LEVEL(session, WT_VERB_EVICT, WT_VERBOSE_DEBUG_1); - WT_SET_VERBOSE_LEVEL(session, WT_VERB_EVICTSERVER, WT_VERBOSE_DEBUG_1); - WT_SET_VERBOSE_LEVEL(session, WT_VERB_EVICT_STUCK, WT_VERBOSE_DEBUG_1); + WT_SET_VERBOSE_LEVEL(session, WT_VERB_EVICT, WT_VERBOSE_DEBUG); + WT_SET_VERBOSE_LEVEL(session, WT_VERB_EVICTSERVER, WT_VERBOSE_DEBUG); + WT_SET_VERBOSE_LEVEL(session, WT_VERB_EVICT_STUCK, WT_VERBOSE_DEBUG); verbose_timeout_flags = true; } #endif diff --git a/src/third_party/wiredtiger/src/include/txn_inline.h b/src/third_party/wiredtiger/src/include/txn_inline.h index fda90ec7bbc..47b307de272 100644 --- a/src/third_party/wiredtiger/src/include/txn_inline.h +++ b/src/third_party/wiredtiger/src/include/txn_inline.h @@ -1471,7 +1471,7 @@ __wt_txn_modify_block( if (rollback) { /* Dump information about the txn snapshot. */ - if (WT_VERBOSE_LEVEL_ISSET(session, WT_VERB_TRANSACTION, WT_VERBOSE_DEBUG_1)) { + if (WT_VERBOSE_LEVEL_ISSET(session, WT_VERB_TRANSACTION, WT_VERBOSE_DEBUG)) { WT_ERR(__wt_scr_alloc(session, 1024, &buf)); WT_ERR(__wt_buf_fmt(session, buf, "snapshot_min=%" PRIu64 ", snapshot_max=%" PRIu64 ", snapshot_count=%" PRIu32, diff --git a/src/third_party/wiredtiger/src/include/verbose.h b/src/third_party/wiredtiger/src/include/verbose.h index 2aeb383b7e2..e457e6e4b11 100644 --- a/src/third_party/wiredtiger/src/include/verbose.h +++ b/src/third_party/wiredtiger/src/include/verbose.h @@ -74,30 +74,18 @@ case WT_VERBOSE_INFO: \ (level_str) = "INFO"; \ break; \ - case WT_VERBOSE_DEBUG_1: \ - (level_str) = "DEBUG_1"; \ - break; \ - case WT_VERBOSE_DEBUG_2: \ - (level_str) = "DEBUG_2"; \ - break; \ - case WT_VERBOSE_DEBUG_3: \ - (level_str) = "DEBUG_3"; \ - break; \ - case WT_VERBOSE_DEBUG_4: \ - (level_str) = "DEBUG_4"; \ - break; \ - case WT_VERBOSE_DEBUG_5: \ - (level_str) = "DEBUG_5"; \ + case WT_VERBOSE_DEBUG: \ + (level_str) = "DEBUG"; \ break; \ } \ } while (0) /* - * Default verbosity level. WT_VERBOSE_DEBUG_1 being the default level assigned to verbose messages + * Default verbosity level. WT_VERBOSE_DEBUG being the default level assigned to verbose messages * prior to the introduction of verbosity levels. */ #ifndef WT_VERBOSE_LEVEL_DEFAULT -#define WT_VERBOSE_LEVEL_DEFAULT WT_VERBOSE_DEBUG_1 +#define WT_VERBOSE_LEVEL_DEFAULT WT_VERBOSE_DEBUG #endif /* Default category for messages that don't explicitly specify a category. */ @@ -174,7 +162,7 @@ struct __wt_verbose_multi_category { * Wrapper to __wt_verbose_level using the default verbosity level. */ #define __wt_verbose_debug(session, category, fmt, ...) \ - __wt_verbose_level(session, category, WT_VERBOSE_DEBUG_1, fmt, __VA_ARGS__) + __wt_verbose_level(session, category, WT_VERBOSE_DEBUG, fmt, __VA_ARGS__) /* * __wt_verbose -- diff --git a/src/third_party/wiredtiger/src/include/wiredtiger.in b/src/third_party/wiredtiger/src/include/wiredtiger.in index 49636c137df..cb5bd37d0c9 100644 --- a/src/third_party/wiredtiger/src/include/wiredtiger.in +++ b/src/third_party/wiredtiger/src/include/wiredtiger.in @@ -7495,7 +7495,7 @@ typedef enum { /*! * WiredTiger verbosity levels. The levels define a range of severity categories, with * \c WT_VERBOSE_ERROR being the lowest, most critical level (used by messages on critical error - * paths) and \c WT_VERBOSE_DEBUG_5 being the highest verbosity/informational level (mostly adopted + * paths) and \c WT_VERBOSE_DEBUG being the highest verbosity/informational level (mostly adopted * for debugging). */ typedef enum { @@ -7505,16 +7505,8 @@ typedef enum { WT_VERBOSE_NOTICE, /*!< Messages for significant events in WiredTiger, usually worth noting. */ WT_VERBOSE_INFO, /*!< Informational style messages. */ - WT_VERBOSE_DEBUG_1, /*!< Low severity messages, useful for debugging purposes. This is - the default level when debugging. */ - WT_VERBOSE_DEBUG_2, /*!< Low severity messages, an increase in verbosity from - the previous level. */ - WT_VERBOSE_DEBUG_3, /*!< Low severity messages. */ - WT_VERBOSE_DEBUG_4, /*!< Low severity messages. */ - WT_VERBOSE_DEBUG_5 /*!< Lowest severity messages. */ + WT_VERBOSE_DEBUG /*!< Low severity messages, useful for debugging purposes. */ } WT_VERBOSE_LEVEL; -/*! Temporary, for compatibility. FIXME: SERVER-70652. */ -#define WT_VERBOSE_DEBUG WT_VERBOSE_DEBUG_1 /*! @} */ /* * Verbose section: END diff --git a/src/third_party/wiredtiger/src/support/generation.c b/src/third_party/wiredtiger/src/support/generation.c index 88af5655bef..121b755f29f 100644 --- a/src/third_party/wiredtiger/src/support/generation.c +++ b/src/third_party/wiredtiger/src/support/generation.c @@ -176,15 +176,14 @@ __wt_gen_drain(WT_SESSION_IMPL *session, int which, uint64_t generation) else if (!verbose_timeout_flags && time_diff_ms > (WT_GEN_DRAIN_TIMEOUT_MIN * WT_MINUTE * WT_THOUSAND - 20)) { if (which == WT_GEN_EVICT) { - WT_SET_VERBOSE_LEVEL(session, WT_VERB_EVICT, WT_VERBOSE_DEBUG_1); - WT_SET_VERBOSE_LEVEL(session, WT_VERB_EVICTSERVER, WT_VERBOSE_DEBUG_1); - WT_SET_VERBOSE_LEVEL(session, WT_VERB_EVICT_STUCK, WT_VERBOSE_DEBUG_1); + WT_SET_VERBOSE_LEVEL(session, WT_VERB_EVICT, WT_VERBOSE_DEBUG); + WT_SET_VERBOSE_LEVEL(session, WT_VERB_EVICTSERVER, WT_VERBOSE_DEBUG); + WT_SET_VERBOSE_LEVEL(session, WT_VERB_EVICT_STUCK, WT_VERBOSE_DEBUG); } else if (which == WT_GEN_CHECKPOINT) { - WT_SET_VERBOSE_LEVEL(session, WT_VERB_CHECKPOINT, WT_VERBOSE_DEBUG_1); + WT_SET_VERBOSE_LEVEL(session, WT_VERB_CHECKPOINT, WT_VERBOSE_DEBUG); + WT_SET_VERBOSE_LEVEL(session, WT_VERB_CHECKPOINT_CLEANUP, WT_VERBOSE_DEBUG); WT_SET_VERBOSE_LEVEL( - session, WT_VERB_CHECKPOINT_CLEANUP, WT_VERBOSE_DEBUG_1); - WT_SET_VERBOSE_LEVEL( - session, WT_VERB_CHECKPOINT_PROGRESS, WT_VERBOSE_DEBUG_1); + session, WT_VERB_CHECKPOINT_PROGRESS, WT_VERBOSE_DEBUG); } verbose_timeout_flags = true; } diff --git a/src/third_party/wiredtiger/src/txn/txn_rollback_to_stable.c b/src/third_party/wiredtiger/src/txn/txn_rollback_to_stable.c index 99fc652e0b7..749a626d9bd 100644 --- a/src/third_party/wiredtiger/src/txn/txn_rollback_to_stable.c +++ b/src/third_party/wiredtiger/src/txn/txn_rollback_to_stable.c @@ -470,7 +470,7 @@ __rollback_ondisk_fixup_key(WT_SESSION_IMPL *session, WT_REF *ref, WT_ROW *rip, WT_ERR(__wt_buf_set(session, full_value, hs_value->data, hs_value->size)); } } else - __wt_verbose_level_multi(session, WT_VERB_RECOVERY_RTS(session), WT_VERBOSE_DEBUG_3, + __wt_verbose_multi(session, WT_VERB_RECOVERY_RTS(session), "history store update more recent than on-disk update with time window: %s and type: " "%" PRIu8, __wt_time_window_to_string(hs_tw, tw_string), type); @@ -522,7 +522,7 @@ __rollback_ondisk_fixup_key(WT_SESSION_IMPL *session, WT_REF *ref, WT_ROW *rip, */ if (__rollback_txn_visible_id(session, hs_tw->start_txn) && hs_tw->durable_start_ts <= rollback_timestamp) { - __wt_verbose_level_multi(session, WT_VERB_RECOVERY_RTS(session), WT_VERBOSE_DEBUG_2, + __wt_verbose_multi(session, WT_VERB_RECOVERY_RTS(session), "history store update valid with time window: %s, type: %" PRIu8 " and stable timestamp: %s", __wt_time_window_to_string(hs_tw, tw_string), type, @@ -634,8 +634,7 @@ __rollback_ondisk_fixup_key(WT_SESSION_IMPL *session, WT_REF *ref, WT_ROW *rip, } else { WT_ERR(__wt_upd_alloc_tombstone(session, &upd, NULL)); WT_STAT_CONN_DATA_INCR(session, txn_rts_keys_removed); - __wt_verbose_level_multi( - session, WT_VERB_RECOVERY_RTS(session), WT_VERBOSE_DEBUG_5, "%s", "key removed"); + __wt_verbose_multi(session, WT_VERB_RECOVERY_RTS(session), "%s", "key removed"); } if (rip != NULL) @@ -1246,7 +1245,7 @@ __rollback_abort_updates(WT_SESSION_IMPL *session, WT_REF *ref, wt_timestamp_t r } WT_STAT_CONN_INCR(session, txn_rts_pages_visited); - __wt_verbose_level_multi(session, WT_VERB_RECOVERY_RTS(session), WT_VERBOSE_DEBUG_4, + __wt_verbose_multi(session, WT_VERB_RECOVERY_RTS(session), "%p: page rolled back when page is modified: %s", (void *)ref, __wt_page_is_modified(page) ? "true" : "false"); diff --git a/src/third_party/wiredtiger/test/suite/test_verbose02.py b/src/third_party/wiredtiger/test/suite/test_verbose02.py index a7f6128fbce..c7ad990d951 100755 --- a/src/third_party/wiredtiger/test/suite/test_verbose02.py +++ b/src/third_party/wiredtiger/test/suite/test_verbose02.py @@ -52,11 +52,11 @@ class test_verbose02(test_verbose_base): self.close_conn() # Test passing a single verbose category, 'api' along with the verbosity level - # WT_VERBOSE_DEBUG_1 (1). Ensuring the only verbose output generated is related to the - # 'api' category. + # WT_VERBOSE_DEBUG (1). Ensuring the only verbose output generated is related to the 'api' + # category. with self.expect_verbose(['api:1'], ['WT_VERB_API'], self.is_json) as conn: # Perform a set of simple API operations to generate verbose API messages. - uri = 'table:test_verbose02_api' + uri = 'table:test_verbose01_api' session = conn.open_session() session.create(uri, self.collection_cfg) c = session.open_cursor(uri) @@ -67,7 +67,7 @@ class test_verbose02(test_verbose_base): # At this time, there is no verbose messages with the category WT_VERB_API and the verbosity # level WT_VERBOSE_INFO (0), hence we don't expect any output. with self.expect_verbose(['api:0'], ['WT_VERB_API'], self.is_json, False) as conn: - uri = 'table:test_verbose02_api' + uri = 'table:test_verbose01_api' session = conn.open_session() session.create(uri, self.collection_cfg) c = session.open_cursor(uri) @@ -76,15 +76,15 @@ class test_verbose02(test_verbose_base): session.close() # Test passing another single verbose category, 'compact' with different verbosity levels. - # Since there are verbose messages with the category WT_VERB_COMPACT and the verbosity - # levels WT_VERBOSE_INFO (0) through WT_VERBOSE_DEBUG_5 (5), we can test them all. - cfgs = ['compact:0', 'compact:1', 'compact:2', 'compact:3', 'compact:4', 'compact:5'] + # Since there are verbose message with the category WT_VERB_COMPACT and the verbosity levels + # WT_VERBOSE_INFO (0) and WT_VERBOSE_DEBUG (1), we can test them both. + cfgs = ['compact:0', 'compact:1'] for cfg in cfgs: with self.expect_verbose([cfg], ['WT_VERB_COMPACT'], self.is_json) as conn: # Create a simple table to invoke compaction on. We aren't doing anything # interesting with the table, we want to simply invoke a compaction pass to generate # verbose messages. - uri = 'table:test_verbose02_compact' + uri = 'table:test_verbose01_compact' session = conn.open_session() session.create(uri, self.collection_cfg) session.compact(uri) @@ -103,7 +103,7 @@ class test_verbose02(test_verbose_base): # Perform a set of simple API operations (table creations and cursor operations) to # generate verbose API messages. Beyond opening the connection resource, we # shouldn't need to do anything special for the version category. - uri = 'table:test_verbose02_multiple' + uri = 'table:test_verbose01_multiple' session = conn.open_session() session.create(uri, self.collection_cfg) c = session.open_cursor(uri) @@ -118,9 +118,9 @@ class test_verbose02(test_verbose_base): self.assertRaisesHavingMessage(wiredtiger.WiredTigerError, lambda:self.wiredtiger_open(self.home, 'verbose=[api:-1]'), '/Failed to parse verbose option \'api\'/') - # Any value greater than WT_VERBOSE_DEBUG_5 (5) is invalid. + # Any value greater than WT_VERBOSE_DEBUG (1) is invalid. self.assertRaisesHavingMessage(wiredtiger.WiredTigerError, - lambda:self.wiredtiger_open(self.home, 'verbose=[api:6]'), + lambda:self.wiredtiger_open(self.home, 'verbose=[api:2]'), '/Failed to parse verbose option \'api\'/') if __name__ == '__main__': diff --git a/src/third_party/wiredtiger/test/suite/test_verbose04.py b/src/third_party/wiredtiger/test/suite/test_verbose04.py deleted file mode 100644 index 09d0beffff9..00000000000 --- a/src/third_party/wiredtiger/test/suite/test_verbose04.py +++ /dev/null @@ -1,168 +0,0 @@ -#!/usr/bin/env python -# -# Public Domain 2014-present MongoDB, Inc. -# Public Domain 2008-2014 WiredTiger, Inc. -# -# This is free and unencumbered software released into the public domain. -# -# Anyone is free to copy, modify, publish, use, compile, sell, or -# distribute this software, either in source code form or as a compiled -# binary, for any purpose, commercial or non-commercial, and by any -# means. -# -# In jurisdictions that recognize copyright laws, the author or authors -# of this software dedicate any and all copyright interest in the -# software to the public domain. We make this dedication for the benefit -# of the public at large and to the detriment of our heirs and -# successors. We intend this dedication to be an overt act of -# relinquishment in perpetuity of all present and future rights to this -# software under copyright law. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR -# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# - -from test_verbose01 import test_verbose_base -from wtdataset import SimpleDataSet -import wttest - -# test_verbose04.py -# Verify extended debug verbose levels (WT_VERBOSE_DEBUG_2 through 5). -class test_verbose04(test_verbose_base): - def updates(self, uri, value, ds, nrows, commit_ts): - session = self.session - cursor = session.open_cursor(uri) - for i in range(1, nrows + 1): - session.begin_transaction() - cursor[ds.key(i)] = value - session.commit_transaction('commit_timestamp=' + self.timestamp_str(commit_ts)) - cursor.close() - - def test_verbose_level_2(self): - self.close_conn() - - self.cleanStdout() - verbose_config = self.create_verbose_configuration(['rts:2']) - conn = self.wiredtiger_open(self.home, verbose_config) - session = conn.open_session() - - self.conn = conn - self.session = session - - uri = "table:test_verbose04" - create_params = 'key_format=i,value_format=S' - session.create(uri, create_params) - - ds = SimpleDataSet(self, uri, 0, key_format='i', value_format="S") - ds.populate() - - nrows = 1000 - value = 'x' * 1000 - - # Insert values with varying timestamps. - self.updates(uri, value, ds, nrows, 20) - - # Move the stable timestamp past our updates. - self.conn.set_timestamp('stable_timestamp=' + self.timestamp_str(40)) - - # Update values. - self.updates(uri, value, ds, nrows, 60) - - # Perform a checkpoint and close the connection. - self.session.checkpoint('use_timestamp=true') - conn.close() - - output = self.readStdout(self.nlines) - self.assertTrue('DEBUG_2' in output) - self.cleanStdout() - - def walk_at_ts(self, check_value, uri, read_ts): - session = self.session - session.begin_transaction() - cursor = session.open_cursor(uri) - for k, v in cursor: - pass - session.commit_transaction() - cursor.close() - - def test_verbose_level_3(self): - self.close_conn() - - self.cleanStdout() - verbose_config = self.create_verbose_configuration(['rts:3']) - conn = self.wiredtiger_open(self.home, 'cache_size=50MB,' + verbose_config) - session = conn.open_session() - - self.conn = conn - self.session = session - - nrows = 1000 - - # Create a table. - uri = "table:test_verbose_04" - ds = SimpleDataSet(self, uri, 0, key_format='i', value_format='S') - ds.populate() - - value = "aaaaa" * 100 - - # Pin the stable timestamp to 10. - self.conn.set_timestamp('stable_timestamp=' + self.timestamp_str(10)) - - # Perform several updates. - self.updates(uri, value, ds, nrows, 20) - self.updates(uri, value, ds, nrows, 30) - self.updates(uri, value, ds, nrows, 40) - self.updates(uri, value, ds, nrows, 50) - - # Touch all of our data with a read timestamp > the commit timestamp. - self.walk_at_ts(value, uri, 21) - self.walk_at_ts(value, uri, 31) - self.walk_at_ts(value, uri, 41) - self.walk_at_ts(value, uri, 51) - - # Perform a checkpoint and close the connection. - self.session.checkpoint() - conn.close() - - # Possibly a lot of output here, allow many more chars than nlines. - output = self.readStdout(self.nlines * 100000) - self.assertTrue('DEBUG_3' in output) - self.cleanStdout() - - def test_verbose_level_4_and_5(self): - self.close_conn() - - self.cleanStdout() - verbose_config = self.create_verbose_configuration(['recovery:5']) - conn = self.wiredtiger_open(self.home, verbose_config) - session = conn.open_session() - - ckpt_uri = 'table:test_verbose_04' - session.create(ckpt_uri, 'key_format=i,value_format=i,log=(enabled=false)') - c_ckpt = session.open_cursor(ckpt_uri) - - # Add some data. - session.begin_transaction() - c_ckpt[1] = 1 - session.commit_transaction('commit_timestamp=' + self.timestamp_str(10)) - - # Set the stable timestamp before the data. - conn.set_timestamp('stable_timestamp=' + self.timestamp_str(9)) - - # Run recovery. - conn.close() - conn = self.wiredtiger_open(self.home, verbose_config) - - output = self.readStdout(self.nlines) - self.assertTrue('DEBUG_4' in output) - self.assertTrue('DEBUG_5' in output) - conn.close() - self.cleanStdout() - -if __name__ == '__main__': - wttest.run() |