In diagnosing the cache stuck issue encountered by Alex C I noticed our stable and oldest timestamps get set too far back in time, we should fix this and it will resolve any cache stuck issues.
Patch:
diff --git a/test/cppsuite/test_harness/timestamp_manager.h b/test/cppsuite/test_harness/timestamp_manager.h index 24f0e3e41..a000a5e0d 100644 --- a/test/cppsuite/test_harness/timestamp_manager.h +++ b/test/cppsuite/test_harness/timestamp_manager.h @@ -53,8 +53,10 @@ class timestamp_manager : public component { _oldest_lag = _config->get_int(OLDEST_LAG); testutil_assert(_oldest_lag >= 0); + _oldest_lag = _oldest_lag << 32; _stable_lag = _config->get_int(STABLE_LAG); testutil_assert(_stable_lag >= 0); + _stable_lag = _stable_lag << 32; } void @@ -65,11 +67,12 @@ class timestamp_manager : public component { wt_timestamp_t latest_ts_s; /* Timestamps are checked periodically. */ - latest_ts_s = (get_next_ts() >> 32); + latest_ts_s = (get_time_now_s()); /* * Keep a time window between the latest and stable ts less than the max defined in the * configuration. */ + std::cout << std::hex << latest_ts_s << " " << _stable_ts << std::endl; testutil_assert(latest_ts_s >= _stable_ts); if ((latest_ts_s - _stable_ts) > _stable_lag) { debug_print("Timestamp_manager: Stable timestamp expired.", DEBUG_INFO); @@ -107,7 +110,7 @@ class timestamp_manager : public component { uint64_t current_time = get_time_now_s(); _increment_ts.fetch_add(1); - current_time = (current_time << 32) | (_increment_ts & 0x00000000FFFFFFFF); + current_time = (current_time) | (_increment_ts & 0x00000000FFFFFFFF); _latest_ts = current_time; return (_latest_ts); @@ -128,7 +131,7 @@ class timestamp_manager : public component { { auto now = std::chrono::system_clock::now().time_since_epoch(); uint64_t current_time_s = - static_cast<uint64_t>(std::chrono::duration_cast<std::chrono::seconds>(now).count()); + static_cast<uint64_t>(std::chrono::duration_cast<std::chrono::seconds>(now).count()) << 32; return (current_time_s); }