Add test to reproduce multi-threading issue of computing extent and relationship #3528
+158
−0
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 of Change(s)
We found a very strange behavior that
ComputeExtent
along withGetForwardedTargets
in a multi-threading way would influence the behavior of getting material binding with APIUsdRelationship::GetForwardedTargets
. See the changes of this PR about the test to reproduce this. In this test, it's trying to traverse the whole stage with multi-threads. All operations are supposed to be read-only to the stage, and the test should be successful. However, it fails unexpectedly sometimes. AddingTfRegistryManager::GetInstance().SubscribeTo<UsdGeomBoundable>();
to the first line ofmain()
will pass the test, which we still have no idea why.You need to run the test with
--repeat until-fail:1000
to increase the possibility of failure.Fixes Issue(s)
#3529
Checklist
[x] I have created this PR based on the dev branch
[x] I have followed the coding conventions
[ ] I have added unit tests that exercise this functionality (Reference:
testing guidelines)
[ ] I have verified that all unit tests pass with the proposed changes
[x] I have submitted a signed Contributor License Agreement (Reference:
Contributor License Agreement instructions)