-
Notifications
You must be signed in to change notification settings - Fork 248
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
AL languages internal cache is not always correctly refreshed #7891
Comments
I'll accept this since I think it's worth investing into this. However, the issue is not caching. The problem is that the extension and VSCode are not processing external changes properly. We'll definitely work on improving the GitHub branch change scenario. For the symbols, it is possible that this is a larger investment which might take more time. |
As far as symbols go, I do think it is (somewhat) a caching problem:
If we had a command in VSCode that would replicate this, at least the symbols could be manually refreshed. As far as the source files go, I did not investigate and that is surely a different kind of behaviour / issue. |
Agree with @BazookaMusic . We will try to make github branch changes not to blow up the language server and the diagnostics service. |
I'd say this (or similar effects) doesn't just happen around external changes, but also often happens with changes in VS code. #1 #2 If you write more of the variable name yourself you can sometimes watch the editor slowly catch up to what you have typed in multiple steps, but it is really unnecessarily slow.. #3 ... But even small workspaces with e.g. <20 files can take upwards of 2 minutes to be fully loaded with just 6MB of base application symbol packages.. (e.g. with 8 cores, enough RAM and an SSD - thats crazy slow) I expect a lot of that probably comes from most of the extension being coded in JS..? |
@HiddenDude what you're talking about is something entirely different and what you're describing sounds like a bug. I just tried the MS base app and could open it and load it in around 2 minutes, so 2 minutes for 20 files sounds like the language server gets stuck somewhere. This is even more apparent by the symptoms you are describing. It's not about tracking changes, if goto definition and intellisense gets slow that means that the compilation is not being generated fast enough, not that changes are being missed. I'd suggest trying this out (especially the troubleshooting part and setting code analysis to file) to see if there's some analyzer rule eating up all the cpu: If that doesn't fix it, the next step would be to try turning off other performance impacting features especially if everything is so slow that you are not using it. I'd suggest turning off other AL related extensions, code lens and finally code actions and seeing if that makes a difference. If it's the last two that helps or nothing helps, I'd appreciate if you share some example project where the language server gets borked so we can look at it. However, please share the details in a new issue so as not to cause noise on this one. |
1. Describe the bug
The AL language editor host executable has an internal cache where it holds things like referenced symbols and project symbols and so on. I assume for performance reasons. This cache however is not always refreshed correctly and requires the user to run a "Reload Window" or reload the entire project workspace to refresh it.
I have a few scenarios where this happens and is a problem for me:
app.json
triggers a cache refresh, but only when done so from inside VS Code. Ifapp.json
is modified externally, AL language does not detect a change to it and thus does not refresh anything.2. To Reproduce
Steps to reproduce the behavior:
Scenario 1:
.alpackages
folder.Scenario 2:
.alpackages
folder.app.json
and reset the version to what it was before.Scenario 3:
3. Expected behavior
Option 1: detect file changes even when made from outside the project. There are numerous tools around now that interface with AL projects, tying it's caching mechanism to only what happens under AL languages watch is very limiting. You could, for example, bind this to the
app.json
file only. Anyone who wants to cause a cache refresh from outside VS Code then just has to touch that file and you would not have to watch all project files for changes.Option 2: give us a command that let's us explicitly cause a cache refresh without having to reload the entire editor. This command would then also be required to be callable from other extensions, pretty please.
4. Actual behavior
The cache often becomes stale and requires me to reload my editor, causing lots of reload times.
5. Versions:
Internal work item: AB#556873
The text was updated successfully, but these errors were encountered: