mirror of
https://github.com/spring-projects/spring-framework
synced 2026-06-08 17:33:33 +00:00
Merge branch '6.2.x'
# Conflicts: # spring-core/src/main/java/org/springframework/util/ConcurrentReferenceHashMap.java
This commit is contained in:
@@ -61,7 +61,7 @@ public interface ProxyMethodInvocation extends MethodInvocation {
|
||||
MethodInvocation invocableClone(@Nullable Object... arguments);
|
||||
|
||||
/**
|
||||
* Set the arguments to be used on subsequent invocations in the any advice
|
||||
* Set the arguments to be used on subsequent invocations in any advice
|
||||
* in this chain.
|
||||
* @param arguments the argument array
|
||||
*/
|
||||
|
||||
@@ -609,7 +609,7 @@ public class ConcurrentReferenceHashMap<K, V> extends AbstractMap<K, V> implemen
|
||||
* @param task the update operation
|
||||
* @return the result of the operation
|
||||
*/
|
||||
public <T> @Nullable T doTask(final int hash, final @Nullable Object key, final Task<T> task) {
|
||||
private <T> @Nullable T doTask(final int hash, final @Nullable Object key, final Task<T> task) {
|
||||
boolean resize = task.hasOption(TaskOption.RESIZE);
|
||||
if (task.hasOption(TaskOption.RESTRUCTURE_BEFORE)) {
|
||||
restructureIfNecessary(resize);
|
||||
@@ -674,7 +674,6 @@ public class ConcurrentReferenceHashMap<K, V> extends AbstractMap<K, V> implemen
|
||||
}
|
||||
|
||||
private void restructure(boolean allowResize, @Nullable Reference<K, V> ref) {
|
||||
boolean needsResize;
|
||||
lock();
|
||||
try {
|
||||
int expectedCount = this.count.get();
|
||||
@@ -690,7 +689,7 @@ public class ConcurrentReferenceHashMap<K, V> extends AbstractMap<K, V> implemen
|
||||
|
||||
// Estimate new count, taking into account count inside lock and items that
|
||||
// will be purged.
|
||||
needsResize = (expectedCount > 0 && expectedCount >= this.resizeThreshold);
|
||||
boolean needsResize = (expectedCount > 0 && expectedCount >= this.resizeThreshold);
|
||||
boolean resizing = false;
|
||||
int restructureSize = this.references.length;
|
||||
if (allowResize && needsResize && restructureSize < MAXIMUM_SEGMENT_SIZE) {
|
||||
@@ -731,8 +730,8 @@ public class ConcurrentReferenceHashMap<K, V> extends AbstractMap<K, V> implemen
|
||||
while (ref != null) {
|
||||
if (!toPurge.contains(ref)) {
|
||||
Entry<K, V> entry = ref.get();
|
||||
// Also filter out null references that are now null
|
||||
// they should be polled from the queue in a later restructure call.
|
||||
// Also filter out null references that are now null:
|
||||
// They should be polled from the queue in a later restructure call.
|
||||
if (entry != null) {
|
||||
purgedRef = this.referenceManager.createReference(
|
||||
entry, ref.getHash(), purgedRef);
|
||||
@@ -744,7 +743,7 @@ public class ConcurrentReferenceHashMap<K, V> extends AbstractMap<K, V> implemen
|
||||
this.references[i] = purgedRef;
|
||||
}
|
||||
}
|
||||
this.count.set(Math.max(newCount, 0));
|
||||
this.count.set(newCount);
|
||||
}
|
||||
finally {
|
||||
unlock();
|
||||
|
||||
Reference in New Issue
Block a user