Fix flakiness in FieldDataLoadingIT.testIndicesFieldDataCacheSizeSetting() #19571
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Fixes flakiness in FieldDataLoadingIT.testIndicesFieldDataCacheSizeSetting().
The issue here was that on index creation, OpenSearch temporarily creates and then closes a test/temp index with the same name as the real index, using IndicesService.withTempIndexService(). The close causes the field data cache to wipe keys for that index name. But, since FDC cleanup is asynchronous and the cleanup interval for this test was 1 second, occasionally the wipe could happen after we run the first query on the real index but after we check that the resulting memory size of the cache is >0. That wiped the actual keys so the memory size was incorrectly 0.
We fix this by, after index creation, ensuring the cache clear cycle has completed. This is done by adding a key and then clearing the cache and waiting until the stats return to 0. Afterwards the tests can continue without risk of any extra FDC wipes at unexpected times.
Related Issues
Resolves #19431
Check List
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.