From 8ec3b6c62a9327593e88aa8a8f75164fffac8de2 Mon Sep 17 00:00:00 2001 From: Alexandr Evstigneev Date: Sun, 17 Sep 2023 21:35:04 +0400 Subject: [PATCH] Revert "Push file properties in non-blocking read action" This reverts commit 3262e4410ef56fcbeee7d6722244984f84e16bb9. IJ-CR-114938 GitOrigin-RevId: a27df8df79bda5c7852e9aee80507a1ec5e5eea0 --- .../impl/PushedFilePropertiesUpdaterImpl.java | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/impl/PushedFilePropertiesUpdaterImpl.java b/platform/lang-impl/src/com/intellij/openapi/roots/impl/PushedFilePropertiesUpdaterImpl.java index 1961ee86c022..9137de993837 100644 --- a/platform/lang-impl/src/com/intellij/openapi/roots/impl/PushedFilePropertiesUpdaterImpl.java +++ b/platform/lang-impl/src/com/intellij/openapi/roots/impl/PushedFilePropertiesUpdaterImpl.java @@ -47,7 +47,10 @@ import com.intellij.util.messages.SimpleMessageBusConnection; import com.intellij.workspaceModel.ide.impl.legacyBridge.module.ModuleEntityUtils; import kotlin.sequences.Sequence; import kotlin.sequences.SequencesKt; -import org.jetbrains.annotations.*; +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.io.IOException; import java.util.*; @@ -421,12 +424,12 @@ public final class PushedFilePropertiesUpdaterImpl extends PushedFilePropertiesU fileOrDir.getChildren(); // outside read action to avoid freezes } - if (fileOrDir instanceof VirtualFileWithId) { + ReadAction.run(() -> { + if (!fileOrDir.isValid() || !(fileOrDir instanceof VirtualFileWithId)) return; doApplyPushersToFile(fileOrDir, pushers, moduleValues); - } + }); } - @NonBlocking private void doApplyPushersToFile(@NotNull VirtualFile fileOrDir, @NotNull List> pushers, Object @Nullable[] moduleValues) { @@ -434,18 +437,13 @@ public final class PushedFilePropertiesUpdaterImpl extends PushedFilePropertiesU for (int i = 0; i < pushers.size(); i++) { //noinspection unchecked FilePropertyPusher pusher = (FilePropertyPusher)pushers.get(i); + if (isDir + ? !pusher.acceptsDirectory(fileOrDir, myProject) + : pusher.pushDirectoriesOnly() || !pusher.acceptsFile(fileOrDir, myProject)) { + continue; + } Object value = moduleValues != null ? moduleValues[i] : null; - - ReadAction.nonBlocking(() -> { - if (isDir - ? !pusher.acceptsDirectory(fileOrDir, myProject) - : pusher.pushDirectoriesOnly() || !pusher.acceptsFile(fileOrDir, myProject)) { - return; - } - findAndUpdateValue(fileOrDir, pusher, value); - }) - .expireWhen(() -> !fileOrDir.isValid()) - .executeSynchronously(); + findAndUpdateValue(fileOrDir, pusher, value); } }