HCL AppScan Plugin crashes with 2022.2 versions of JetBrains IDE's

Answered

With version 2022.2 of the IDE, our plugin (HCL AppScan 2.3) the IDE gets stuck/frozen at startup.

After we analyzed and debugged, when trying to use ProgressManager.getInstance().runProcessWithProgressSynchronously and execute task synchronously with the progress bar is causing the freeze in Windows 10.

This issue is seen only in the 2022.2 version of the IDE but in the prior version, it was working fine even in 2022.1 as well.

So Is this a limitation or bug in the new version of the IDE ? or Is there any alternative introduced for the ProgressManager?

0
3 comments

Please provide thread Dumps and code snippet of invocation. What exactly is being done in this task? Can you reproduce it on other OS?

0

Hi Yann,

Thank you for you quick response.

After we install our plugin from market place, and using the plugin we connecting to cloud application in which "ProgressManager.getInstance().runProcessWithProgressSynchronously" is invoked and this freezes the IDE.

This happens only on windows, works fine in Mac and Linux.

Please find below code snippet:

public class PluginToolWindowFactory implements ToolWindowFactory {
    @Override
    public void createToolWindowContent(@NotNull Project project, @NotNull ToolWindow toolWindow) {
        PluginToolWindow pluginToolWindow = new PluginToolWindow(project);
        ContentManager contentManager = toolWindow.getContentManager();

 

       SimpleToolWindowPanel fGToolWindowContent = pluginToolWindow.createFGToolWindowContent(project);
        Content fGContent = ContentFactory.SERVICE.getInstance().createContent(fGToolWindowContent, MessagesBundle.message("toolwindow.fg.title"), false);
        contentManager.addContent(fGContent);
        
        // Data is populated from this method
        pluginToolWindow.refreshComponents(project);
    }
}

 

public class PluginToolWindow {
    public void refreshComponents(@NotNull Project project) {
        AtomicReference<JComponent> newPanel = new AtomicReference<>();
        ProgressManager.getInstance().runProcessWithProgressSynchronously(() -> {
            ProgressIndicator progressIndicator = ProgressManager.getInstance().getProgressIndicator();
            progressIndicator.setText(MessagesBundle.message("toolwindow.progressbar.text"));
            
            // This method populates Data and returns Panel
            newPanel.set(loadComponent());
        }, MessagesBundle.message("plugin.display.name"), false, project);
        
        if (newPanel.get() != null) {
            clearView();
            updateComponent(newPanel.get());
        }
    }
    
    public JPanel loadComponent() {
        // Invoking HTTP Get request to populate data and creating corresponding Components
        // So Invoking this snippet from ProgressBar
    }

}

We have the dumps available, please let us know how to attach them, since I do not find an option to attach it here.

 

Thank you,

Rohan P

 

0

AFAIU you're running synchronous (blocking) task on EDT please see https://plugins.jetbrains.com/docs/intellij/general-threading-rules.html

0

Please sign in to leave a comment.