Details
Description
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