The workload_tracking component keeps running while the test has finished when the tracking table gets big. We should check for _running in the while loop.
Reproducing the issue
Set the test duration to 10s:
--- a/test/cppsuite/configs/base_test_default.txt +++ b/test/cppsuite/configs/base_test_default.txt @@ -1,5 +1,5 @@ # Used as a base test for the framework. -duration_seconds=60, +duration_seconds=10, cache_size_mb=200, enable_logging=true, checkpoint_manager=
Run the following command to execute base_test:
./run -t base_test -l 3
The test should take more than 10s to finish because the workload tracking component keeps doing work.
Suggested changes
diff --git a/test/cppsuite/test_harness/workload/workload_tracking.cxx b/test/cppsuite/test_harness/workload/workload_tracking.cxx index 1211749ec..c68010967 100644 --- a/test/cppsuite/test_harness/workload/workload_tracking.cxx +++ b/test/cppsuite/test_harness/workload/workload_tracking.cxx @@ -99,7 +99,7 @@ workload_tracking::do_work() /* Take a copy of the oldest so that we sweep with a consistent timestamp. */ oldest_ts = _tsm.get_oldest_ts(); - while ((ret = _sweep_cursor->prev(_sweep_cursor.get())) == 0) { + while (_running && (ret = _sweep_cursor->prev(_sweep_cursor.get())) == 0) { testutil_check(_sweep_cursor->get_key(_sweep_cursor.get(), &collection_id, &key, &ts)); testutil_check(_sweep_cursor->get_value(_sweep_cursor.get(), &op_type, &value)); @@ -137,10 +137,6 @@ workload_tracking::do_work() free(sweep_key); - if (ret != WT_NOTFOUND) - testutil_die(LOG_ERROR, - "Tracking table sweep failed: cursor->next() returned an unexpected error %d.", ret); -
Definition of done:
All cpp tests are OK