GH-707 Fix Concurrent Modification exception on lookup

Rare condition but it appears that in some runtimes there could be multiple threads invoking lookup operation
Added test to validate

Resolves #707
This commit is contained in:
Oleg Zhurakousky
2021-06-08 14:07:32 +02:00
parent 82fd6f008f
commit cebd1fde67
2 changed files with 25 additions and 2 deletions

View File

@@ -25,12 +25,12 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.TreeSet;
import java.util.concurrent.CopyOnWriteArraySet;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;
import java.util.function.Function;
@@ -90,7 +90,7 @@ public class SimpleFunctionRegistry implements FunctionRegistry, FunctionInspect
private final Field headersField;
private final Set<FunctionRegistration<?>> functionRegistrations = new HashSet<>();
private final Set<FunctionRegistration<?>> functionRegistrations = new CopyOnWriteArraySet<>();
private final Map<String, FunctionInvocationWrapper> wrappedFunctionDefinitions = new HashMap<>();