-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: Test Model
-
None
-
Storage Engines - Persistence
-
50.402
-
None
-
None
Three of model_test's -G generator overrides have no effect.
conn_logging
kv_workload_generator::generate_log_configurations() builds a throwaway generator from the static _default_spec rather than the spec the caller passed, so -G conn_logging= is discarded and connection logging stays at its 0.5 default.
timing_stress
generate_stress_configurations() has the identical _default_spec bug, so all eleven -G timing_stress.<mode>=<weight> overrides are discarded and every stress mode stays at its equal 0.1 default weight.
checkpoint_crash
checkpoint_crash has no UPDATE_SPEC entry in update_spec() (test/model/tools/model_test/main.cpp), so it cannot be tuned at all. checkpoint, crash, evict and restart are all there.
Reproducer
-n generates and prints the workload without running it, so these need no database and take a second. From cmake_build/test/model/tools:
$ ./model_test -n -l 5-6 -S 1 -G conn_logging=0.0 | grep -c 'log=(enabled=true)' 1 <-- asked for no logging, got logging $ ./model_test -n -l 5-6 -S 11 -G conn_logging=1.0 | grep -c 'log=(enabled=true)' 0 <-- asked for logging, got none
With the fix, the first command prints 0 and the second prints 1 for every seed.
The stress overrides are ignored the same way. Asking for one mode at weight 1.0 with the other ten zeroed:
$ ./model_test -n -g -l 5-6 -S 1 -G timing_stress.ckpt_slow=1.0,<other ten =0.0>
timing_stress_for_test=[checkpoint_evict_page] <-- the default-weighted draw
With the fix this prints [checkpoint_slow] for every seed.
Why it matters
Between them these make it impossible to ask for a run with logging deliberately on or off at a chosen checkpoint-crash rate, which is exactly what is needed to test crash/recovery behaviour that depends on logging. It also silently weakens any -G conn_logging or -G timing_stress.* in an Evergreen task definition.
Definition of done
- -G conn_logging= controls the generated connection configuration.
- -G timing_stress.<mode>= controls the stress mode weights.
- -G checkpoint_crash= controls the checkpoint crash probability.
Fix
Split out of the first commit of https://github.com/wiredtiger/wiredtiger/pull/14437 (draft), because it is unrelated to checkpoints. PR: https://github.com/wiredtiger/wiredtiger/pull/14438