[ASTextNode] Fix an race condition on ASTextKitAttributes #819
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.
This problem was reported on #552 by @Kaspik some time ago.
Running the project with thread sanitizers enable show a bunch of errors due to a race condition on
ASTextKitAttributes
, I spent some time looking at that and I found out that the race condition is happening onASTextNode
whenrendererForAttributes
tries to get and set the object to cache.This fixes the problem for me, I don't see any downsides to this implementation but of course, I would like to hear from your guys.
This could be false impressions, but I've noticed some performance improvement while rendering my app feed that has couple textNodes and I tried to measure that.
This is the average time (6 loads) to load a heavy cell with this code change:
with: 0.119627775
without: 0.141625549