From a6c96af7316bc3ee6655ec470f3c387279278cfe Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 24 Jul 2023 21:53:19 +0200 Subject: [PATCH] Use ConcurrentHashMap to manage synchronization. --- .../pushstore/impl/DefaultUserPushStoreFactory.kt | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/DefaultUserPushStoreFactory.kt b/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/DefaultUserPushStoreFactory.kt index 16100fd858..8c85dca80c 100644 --- a/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/DefaultUserPushStoreFactory.kt +++ b/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/DefaultUserPushStoreFactory.kt @@ -26,6 +26,7 @@ import io.element.android.libraries.pushstore.api.UserPushStore import io.element.android.libraries.pushstore.api.UserPushStoreFactory import io.element.android.libraries.sessionstorage.api.observer.SessionListener import io.element.android.libraries.sessionstorage.api.observer.SessionObserver +import java.util.concurrent.ConcurrentHashMap import javax.inject.Inject @SingleIn(AppScope::class) @@ -39,15 +40,13 @@ class DefaultUserPushStoreFactory @Inject constructor( } // We can have only one class accessing a single data store, so keep a cache of them. - private val cache = mutableMapOf() + private val cache = ConcurrentHashMap() override fun create(userId: SessionId): UserPushStore { - return synchronized(cache) { - cache.getOrPut(userId) { - UserPushStoreDataStore( - context = context, - userId = userId - ) - } + return cache.getOrPut(userId) { + UserPushStoreDataStore( + context = context, + userId = userId + ) } }