Skip to content

VSCode various random issues when loading extensions from gitpod.yml #9839

Closed
@szab100

Description

@szab100

Bug description

I have the following list of extensions to be loaded for a spring-boot project that is using Lombok, so needs pre-processing before Java compilation.

vscode:
  extensions:
    - gabrielbb.vscode-lombok
    - vscjava.vscode-java-pack
    - vscjava.vscode-java-debug
    - vscjava.vscode-java-dependency
    - vscjava.vscode-java-test
    - vscjava.vscode-maven
    - pivotal.vscode-boot-dev-pack
    - rangav.vscode-thunder-client
    - ms-azuretools.vscode-docker

The experience seems quite random, depending on whether the Lombok extension was loaded before / after the vscode-java-pack extension, it sometimes prompts the user twice with the following popups:

  • Java Extension Contributions changed, reloading Gitpod Code is required for the changes to take effect. Source: Language Support for Java(TM) by Red Hat (Extension) - User needs to click "Reload"
  • Java Language Server configuration changed, please restart Gitpod Code. - User needs to click "Restart Now

However, sometimes these popups do not appear, but the loaded java projects have many errors due to the missing Lombok pre-processing step. Since the popup was not shown (same if the users misses them), the only way to resolve is by refreshing the entire page.

It looks to me that the problem itself may not be with this particular extension (that hooks up to other extensions' events, config etc), but how Gitpod loads and initializes the VSCode extensions in general (I found similar random timing / order / side-effect issues with other extensions too).

If that is the case, I believe there could be further improvements made in order to provide a stable, dependable experience, like allowing users to specify:

  • ordering for the listed extensions (if the YAML sequence order is not preserved)
  • a certain delay or dependencies on other extension(s) - so that extensions can be loaded in parallel by default, but those having dependencies must be loaded strictly after the deps are fully loaded
  • actions to be performed between extensions [like restarting a component OR run a shell cmd]

Please let me know what you think is the best solution for these problems.

Steps to reproduce

described in description

Workspace affected

No response

Expected behavior

No response

Example repository

No response

Anything else?

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions