Skip to content
Snippets Groups Projects
Commit c793c138 authored by Brendan Le Ny's avatar Brendan Le Ny Committed by Alex Morel
Browse files

Fix concurrent modification exception with dispatcher caching

keycloak-1  | 2024-06-21 08:32:21,335 ERROR [org.keycloak.services.error.KeycloakErrorHandler] (executor-thread-9) Uncaught server error: java.util.ConcurrentModificationException
keycloak-1  | 	at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1221)
keycloak-1  | 	at sh.libre.scim.core.ScimDispatcher.createForSession(ScimDispatcher.java:31)
keycloak-1  | 	at sh.libre.scim.event.ScimEventListenerProvider.<init>(ScimEventListenerProvider.java:49)
keycloak-1  | 	at sh.libre.scim.event.ScimEventListenerProviderFactory.create(ScimEventListenerProviderFactory.java:13)
keycloak-1  | 	at sh.libre.scim.event.ScimEventListenerProviderFactory.create(ScimEventListenerProviderFactory.java:9)
keycloak-1  | 	at org.keycloak.services.DefaultKeycloakSession.getProvider(DefaultKeycloakSession.java:195)
parent 0b24401d
No related branches found
No related tags found
1 merge request!3Sonar refactoring
...@@ -10,6 +10,7 @@ import java.util.LinkedHashMap; ...@@ -10,6 +10,7 @@ import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Consumer; import java.util.function.Consumer;
/** /**
...@@ -19,7 +20,7 @@ public class ScimDispatcher { ...@@ -19,7 +20,7 @@ public class ScimDispatcher {
private static final Logger logger = Logger.getLogger(ScimDispatcher.class); private static final Logger logger = Logger.getLogger(ScimDispatcher.class);
private static final Map<KeycloakSession, ScimDispatcher> sessionToScimDispatcher = new LinkedHashMap<>(); private static final Map<KeycloakSession, ScimDispatcher> sessionToScimDispatcher = new ConcurrentHashMap<>();
private final KeycloakSession session; private final KeycloakSession session;
private boolean clientsInitialized = false; private boolean clientsInitialized = false;
private final List<UserScimService> userScimServices = new ArrayList<>(); private final List<UserScimService> userScimServices = new ArrayList<>();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment