Avoid modifying surface cache while updating it #2260
Closed
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.
Community build scala/community-build#1568 noticed that delegating to
ConcurrentHashMap
in scala/scala#10027 makesReflectSurfaceFactory.apply
fail due to recursive update of cache.This commit refactors so that the "update" function returns the surface or null for the LazySurface case. (Where null means nothing to cache.)
I had trouble testing: first to get the build to use my local Scala, which requires setting scalaHome in the subproject settings, then with getting the
test
run to use my fix in the code base, which I did not resolve. So I have not seen the test go green; the stack trace is the old code. Does cross compilation somehow pick up the old library? I did not investigate further at this point.