From eefc6bb21fd8ca79d7888b59152d96089b4563a7 Mon Sep 17 00:00:00 2001 From: Roman Golyshev Date: Thu, 5 Sep 2024 20:48:09 +0200 Subject: [PATCH] [Workspace Model][IJPL-161667] Replace `put` with `putIsAbsent` in `ImmutableEntityStorageImpl.initializeEntity` It does not make sense to replace a value in `entityCache` if it was concurrently inserted by someone else. GitOrigin-RevId: f28ff2357ced479942bef3c05483d5106a757d34 --- .../workspace/storage/impl/ImmutableEntityStorageImpl.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/platform/workspace/storage/src/com/intellij/platform/workspace/storage/impl/ImmutableEntityStorageImpl.kt b/platform/workspace/storage/src/com/intellij/platform/workspace/storage/impl/ImmutableEntityStorageImpl.kt index fc36ed083415..276876c55d55 100644 --- a/platform/workspace/storage/src/com/intellij/platform/workspace/storage/impl/ImmutableEntityStorageImpl.kt +++ b/platform/workspace/storage/src/com/intellij/platform/workspace/storage/impl/ImmutableEntityStorageImpl.kt @@ -95,9 +95,10 @@ internal open class ImmutableEntityStorageImpl( } val newData = newInstance() - entityCache.put(entityId, newData) + val inserted = entityCache.putIfAbsent(entityId, newData) ?: newData - return newData + @Suppress("UNCHECKED_CAST") + return inserted as T } companion object {