Prior to this commit, the `ConcurrentReferenceHashMap#restructure` operation would null out the entire references array before starting the restructuring operation (in case resizing is not necessary). This could cause at runtime race conditions where a lookup operation would return null, when the value is actually cached but not accesible during the restructuring phase. This commit ensures that, when resizing is not required, a new reference list is built (purged of null entries) and then assigned to the reference array. This way, concurrent reads will not return null for existing entries and there are less chances of re-calculating cache entries during the restructuring phase. Closes gh-31008 |
||
---|---|---|
.. | ||
src | ||
spring-core.gradle |