Summary
Improve the stress tests on evergreen to be closer to how MongoDB compiles them and to uncover more races.
Motivation
Recently WT-8913 added stress test on ARM. This was influenced by MongoDB's internal testing on ARM hitting a corruption bug that we want to catch sooner with the WiredTiger testing. There are a few changes that we could make to the ARM and other stress tests that will make stress testing more effective:
- The stress test variants (x86 and ARM) pass posix_configure_flags but the underlying tasks very likely ignore them and build their own version of WiredTiger. This causes confusion and could mislead us into making a change to the posix flags expecting a change to the build. Find a solution that the flags are not ignored, or remove them altogether so that we are not misled.
- ARM compilation for stress testing should pass the flags, -moutline-atomics and -DHAVE_ARM_NEON_INTRIN_H. This is to be closer to how MongoDB builds WiredTiger on ARM
- The diagnostic builds enables diagnostic yields. This causes an additional full memory barrier to be introduced in the code each time a yield happens. This reduces the chances to find memory synchronization bugs. A set of stress tasks can be made introduced to both x86 and ARM variants that would have diagnostic yields a null op. Some brainstorming will be needed to figure out the best means to do this (could be a run time diagnostic configuration like our flags to encourage split races, or it could be a compile time flag like HAVE_DIAGNOSTIC).
For more details look at this comment.
- Does this affect any team outside of WT?
No
- Is this issue urgent?
Yes. We want to make these changes soonish to uncover any potential bugs or fallouts from ARM platform related changes to atomic functions.
- is caused by
-
WT-8913 Add a new build variant for stress testing on the ARM platform
- Closed