Open yadavan88 opened 2 months ago
Thanks for reporting! I can't seem to reproduce the issue. Are you maybe able to get stack traces of the metals process? I suspect that the build server is not starting, but I am not sure how that would happen. Could also post the whole metals.log from .metals directory?
Hi @tgodzik Thanks for the quick response. I am able to reproduce this exactly even in my MacBook Air. I am attaching the full logs, screenshots and the entire project as zip file for reference. Hope it can be reproduced.
I don't see anything wrong in the logs. Would it be possible for you do get stack traces via jstack
? You could also create a file: .metals/bsp.trace.json, which should get populated with the communication between Scala CLI and Metals.
I am looking into other possibilities. Also, are you using power option? You could add {"powerOptions":{"power":true}}
to ide-launcher-options.json
to make sure that is the case?
Here is the bsp trace content:
[Trace - 10:52:27 am] Sending request 'build/initialize - (1)'
Params: {
"displayName": "Metals",
"version": "1.3.5",
"bspVersion": "2.2.0-M2",
"rootUri": "file:///Users/yadukrishnankrishnan/Downloads/metals-test/",
"capabilities": {
"languageIds": [
"scala",
"java"
],
"jvmCompileClasspathReceiver": true
},
"data": {
"javaSemanticdbVersion": "0.10.0",
"semanticdbVersion": "4.9.9",
"supportedScalaVersions": [
"2.13.14",
"2.12.19",
"2.12.18",
"2.12.17",
"2.12.16",
"2.13.11",
"2.13.12",
"2.13.13",
"2.11.12"
],
"enableBestEffortMode": false
}
}
I also tried with the power options. Also have this error in metals.log, but not sure which action caused this
2024.09.16 10:53:56 INFO Running BSP server List(/Users/yadukrishnan/Library/Application Support/Coursier/bin/.scala-cli.aux, bsp, --json-options, /Users/yadukrishnan/temp/metals-test/.scala-build/ide-options-v2.json, --json-launcher-options, /Users/yadukrishnan/temp/metals-test/.scala-build/ide-launcher-options.json, --envs-file, /Users/yadukrishnan/temp/metals-test/.scala-build/ide-envs.json, /Users/yadukrishnan/temp/metals-test)[0m
2024.09.16 10:53:56 ERROR Running process '/Users/yadukrishnan/Library/Application Support/Coursier/bin/.scala-cli.aux bsp --json-options /Users/yadukrishnan/temp/metals-test/.scala-build/ide-options-v2.json --json-launcher-options /Users/yadukrishnan/temp/metals-test/.scala-build/ide-launcher-options.json --envs-file /Users/yadukrishnan/temp/metals-test/.scala-build/ide-envs.json /Users/yadukrishnan/temp/metals-test' failed
java.io.IOException: Cannot run program "/Users/yadukrishnan/Library/Application Support/Coursier/bin/.scala-cli.aux" (in directory "/Users/yadukrishnankrishnan/Downloads/metals-test"): error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1143)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
at scala.meta.internal.process.SystemProcess$.run(SystemProcess.scala:48)
at scala.meta.internal.bsp.BspServers.newConnection$1(BspServers.scala:117)
at scala.meta.internal.bsp.BspServers.$anonfun$newServer$8(BspServers.scala:160)
at scala.meta.internal.metals.BuildServerConnection$.setupServer$1(BuildServerConnection.scala:593)
at scala.meta.internal.metals.BuildServerConnection$.fromSockets(BuildServerConnection.scala:661)
at scala.meta.internal.bsp.BspServers.newServer(BspServers.scala:155)
at scala.meta.internal.bsp.BspConnector.connect$1(BspConnector.scala:167)
at scala.meta.internal.bsp.BspConnector.connect(BspConnector.scala:214)
at scala.meta.internal.metals.ProjectMetalsLspService.$anonfun$autoConnectToBuildServer$4(ProjectMetalsLspService.scala:915)
at scala.meta.internal.metals.TimerProvider.withTimer(TimerProvider.scala:38)
at scala.meta.internal.metals.TimerProvider.timed(TimerProvider.scala:14)
at scala.meta.internal.metals.ProjectMetalsLspService.$anonfun$autoConnectToBuildServer$3(ProjectMetalsLspService.scala:915)
at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:470)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.lang.Thread.run(Thread.java:833)
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.ProcessImpl.forkAndExec(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:314)
at java.lang.ProcessImpl.start(ProcessImpl.java:244)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1110)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
at scala.meta.internal.process.SystemProcess$.run(SystemProcess.scala:48)
at scala.meta.internal.bsp.BspServers.newConnection$1(BspServers.scala:117)
at scala.meta.internal.bsp.BspServers.$anonfun$newServer$8(BspServers.scala:160)
at scala.meta.internal.metals.BuildServerConnection$.setupServer$1(BuildServerConnection.scala:593)
at scala.meta.internal.metals.BuildServerConnection$.fromSockets(BuildServerConnection.scala:661)
at scala.meta.internal.bsp.BspServers.newServer(BspServers.scala:155)
at scala.meta.internal.bsp.BspConnector.connect$1(BspConnector.scala:167)
at scala.meta.internal.bsp.BspConnector.connect(BspConnector.scala:214)
at scala.meta.internal.metals.ProjectMetalsLspService.$anonfun$autoConnectToBuildServer$4(ProjectMetalsLspService.scala:915)
at scala.meta.internal.metals.TimerProvider.withTimer(TimerProvider.scala:38)
at scala.meta.internal.metals.TimerProvider.timed(TimerProvider.scala:14)
at scala.meta.internal.metals.ProjectMetalsLspService.$anonfun$autoConnectToBuildServer$3(ProjectMetalsLspService.scala:915)
at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:470)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.lang.Thread.run(Thread.java:833)
[0m
2024.09.16 10:53:56 INFO tracing is enabled: /Users/yadukrishnankrishnan/Downloads/metals-test/.metals/bsp.trace.json[0m
2024.09.16 10:54:02 INFO no build target found for /Users/yadukrishnankrishnan/Downloads/metals-test/Main.scala. Using presentation compiler with project's scala-library version: 3.3.3[0m
But after these changes, the program is not running
[E] Caught bloop.data.Project$ProjectReadException: Failed to load project from /Users/yadukrishnankrishnan/Downloads/metals-test/.scala-build/.bloop/metals-test_d0706328d4-9f8be73145.json
Bloop 'bsp' command exited with code 1. Something may be wrong with the current configuration.
Running the clean sub-command to clear the working directory and remove caches might help.
If the error persists, please report the issue as a bug and attach a log with increased verbosity by passing -v -v -v.
Error: java.lang.RuntimeException: Bloop BSP connection in /Users/yadukrishnankrishnan/Library/Caches/ScalaCli/bsp-sockets/proc-7362 was unexpectedly closed or bloop didn't start.
For more details, please see '/Users/yadukrishnankrishnan/Downloads/metals-test/.scala-build/stacktraces/1726477063-1729102292817811323.log'
So I cleaned it up using scala-cli clean .
and then it runs through command line as before
Just an update: I killed the java processes and suddenly it is working fine in the project. No idea why
But attaching the logs in case something makes sense:
This is quite curious:
"/Users/yadukrishnan/Library/Application Support/Coursier/bin/.scala-cli.aux"
Looks like Metals was unable to start Scala CLI. Maybe it had the executable cached somehow and it got removed/reinstalled in the meantime? Did you change anything recently? Though why would it be influenced by the docker directive :thinking:
Does bsp.trace only contain the first message as you pasted above?
Anyway, do let me know if that happens again. We could not reproduce on any of our machines.
I havent made any changes recently. I am still able to reproduce the issue from the attached zip file. I just used the same zip and cleared all metadata and tried again. Getting the exact same problem. In both of my laptops I am getting this issue.
Here is the bsp trace file bsp.trace.json
Would be great to compare both using a diff of some kind to see what exactly is different.
which two files?
I would say the whole dirs if possible, not exactly sure which file might have caused it. Though I would rather bet on the json files inside scala-build/.bloop
there were 3 json files in one dir and 4 in another. when compariging, there is no diff other than the dir path
I have multiple scala-cli projects at work. When I added the docker directive, all those projects stopped working correctly in metals. I am not sure what is going wrong!
Maybe the problem is not exact directives but the order of adding them? :thinking:
Btw. Are you using Metals 1.3.3 ? Could you try with a newer version like 1.3.5
or latest snapshot? And maybe post again metals.log if it stills doesn't work
No, mine is metals 1.3.5.
I again cleared the metals log. Cliecked on import, compile and connect to build server. Here si the current metals.log
2024.09.17 16:23:55 INFO time: Imported build in 0.13s[0m
2024.09.17 16:23:55 INFO Correctly reloaded workspace[0m
2024.09.17 16:23:55 INFO running doctor check[0m
2024.09.17 16:23:55 INFO java targets: [0m
2024.09.17 16:23:58 INFO time: indexed workspace in 3.17s[0m
2024.09.17 16:24:33 INFO no build target found for /Users/yadukrishnankrishnan/Downloads/metals-test 2/Main.scala. Using presentation compiler with project's scala-library version: 3.3.3[0m
2024.09.17 16:24:34 INFO no build target found for /Users/yadukrishnankrishnan/Downloads/metals-test 2/Main.scala. Using presentation compiler with project's scala-library version: 3.3.3[0m
Sep 17, 2024 4:24:34 PM org.eclipse.lsp4j.jsonrpc.RemoteEndpoint handleCancellation
WARNING: Unmatched cancel notification for request id 12
2024.09.17 16:24:35 INFO no build target found for /Users/yadukrishnankrishnan/Downloads/metals-test 2/Main.scala. Using presentation compiler with project's scala-library version: 3.3.3[0m
2024.09.17 16:24:36 INFO time: code lens generation in 2.15s[0m
2024.09.17 16:24:51 INFO no build target found for /Users/yadukrishnankrishnan/Downloads/metals-test 2/Main.scala. Using presentation compiler with project's scala-library version: 3.3.3[0m
2024.09.17 16:24:51 INFO no build target found for /Users/yadukrishnankrishnan/Downloads/metals-test 2/Main.scala. Using presentation compiler with project's scala-library version: 3.3.3[0m
2024.09.17 16:24:52 INFO no build target found for /Users/yadukrishnankrishnan/Downloads/metals-test 2/Main.scala. Using presentation compiler with project's scala-library version: 3.3.3[0m
2024.09.17 16:24:52 INFO no build target found for /Users/yadukrishnankrishnan/Downloads/metals-test 2/Main.scala. Using presentation compiler with project's scala-library version: 3.3.3[0m
2024.09.17 16:24:53 INFO no build target found for /Users/yadukrishnankrishnan/Downloads/metals-test 2/Main.scala. Using presentation compiler with project's scala-library version: 3.3.3[0m
2024.09.17 16:24:59 INFO Disconnecting from scala-cli session...[0m
2024.09.17 16:24:59 INFO Shut down connection with build server.[0m
2024.09.17 16:24:59 INFO Attempting to connect to the build server...[0m
2024.09.17 16:24:59 INFO Running BSP server List(/Users/yadukrishnankrishnan/Library/Application Support/Coursier/bin/.scala-cli.aux, --power, bsp, --json-options, /Users/yadukrishnankrishnan/Downloads/metals-test 2/.scala-build/ide-options-v2.json, --json-launcher-options, /Users/yadukrishnankrishnan/Downloads/metals-test 2/.scala-build/ide-launcher-options.json, --envs-file, /Users/yadukrishnankrishnan/Downloads/metals-test 2/.scala-build/ide-envs.json, /Users/yadukrishnankrishnan/Downloads/metals-test 2)[0m
2024.09.17 16:24:59 INFO tracing is enabled: /Users/yadukrishnankrishnan/Downloads/metals-test 2/.metals/bsp.trace.json[0m
2024.09.17 16:25:00 INFO time: Connected to build server in 1.39s[0m
2024.09.17 16:25:00 INFO Connected to Build server: scala-cli v1.5.0[0m
2024.09.17 16:25:00 INFO running doctor check[0m
2024.09.17 16:25:00 INFO java targets: [0m
2024.09.17 16:25:03 INFO time: indexed workspace in 3.32s[0m
2024.09.17 16:25:04 WARN no build target for: /Users/yadukrishnankrishnan/Downloads/metals-test 2/Main.scala[0m
2024.09.17 16:25:04 INFO no build target found for /Users/yadukrishnankrishnan/Downloads/metals-test 2/Main.scala. Using presentation compiler with project's scala-library version: 3.3.3[0m
2024.09.17 16:25:04 INFO no build target found for /Users/yadukrishnankrishnan/Downloads/metals-test 2/Main.scala. Using presentation compiler with project's scala-library version: 3.3.3[0m
2024.09.17 16:25:06 INFO Disconnecting from scala-cli session...[0m
2024.09.17 16:25:06 INFO Shut down connection with build server.[0m
2024.09.17 16:25:06 INFO Attempting to connect to the build server...[0m
2024.09.17 16:25:06 INFO Running BSP server List(/Users/yadukrishnankrishnan/Library/Application Support/Coursier/bin/.scala-cli.aux, --power, bsp, --json-options, /Users/yadukrishnankrishnan/Downloads/metals-test 2/.scala-build/ide-options-v2.json, --json-launcher-options, /Users/yadukrishnankrishnan/Downloads/metals-test 2/.scala-build/ide-launcher-options.json, --envs-file, /Users/yadukrishnankrishnan/Downloads/metals-test 2/.scala-build/ide-envs.json, /Users/yadukrishnankrishnan/Downloads/metals-test 2)[0m
2024.09.17 16:25:07 INFO tracing is enabled: /Users/yadukrishnankrishnan/Downloads/metals-test 2/.metals/bsp.trace.json[0m
2024.09.17 16:25:08 INFO time: Connected to build server in 1.34s[0m
2024.09.17 16:25:08 INFO Connected to Build server: scala-cli v1.5.0[0m
2024.09.17 16:25:08 INFO running doctor check[0m
2024.09.17 16:25:08 INFO java targets: [0m
2024.09.17 16:25:11 INFO time: indexed workspace in 3.31s[0m
2024.09.17 16:25:11 WARN no build target for: /Users/yadukrishnankrishnan/Downloads/metals-test 2/Main.scala[0m
2024.09.17 16:25:11 INFO no build target found for /Users/yadukrishnankrishnan/Downloads/metals-test 2/Main.scala. Using presentation compiler with project's scala-library version: 3.3.3[0m
2024.09.17 16:25:11 INFO no build target found for /Users/yadukrishnankrishnan/Downloads/metals-test 2/Main.scala. Using presentation compiler with project's scala-library version: 3.3.3[0m
2024.09.17 16:25:52 INFO no build target found for /Users/yadukrishnankrishnan/Downloads/metals-test 2/Main.scala. Using presentation compiler with project's scala-library version: 3.3.3[0m
WHen i click on restart build server, i get this
No, mine is metals 1.3.5.
Ach sorry, the first metals.log mentioned 1.3.3.
That looks like we are connecting, but the bsp server is processing something internally. Is the bsp.tace.json the same as previously? We might need to find the bsp server process and jstack it. I still can't seem to reproduce.
Right now, it stopped working even without those directves. I found the bsp process and ran jstack. Here is it. jstack.log
//> using scala 3.3.3
// //> using file EmailClient.scala
@main def main() = {
//EmailClient.send()
}
Even this code doesn't work now
I cleaned up everything, killed all java processes. Still it is not working. I see this log in the metals doctor. What does this mean?
Metals Doctor
Metals Java: 17 from Eclipse Adoptium located at /Users/yadukrishnankrishnan/Library/Caches/Coursier/arc/https/github.com/adoptium/temurin17-binaries/releases/download/jdk-17%252B35/OpenJDK17-jdk_x64_mac_hotspot_17_35.tar.gz/jdk-17+35/Contents/Home
Metals Server version: 1.3.5
Below are listed the build targets for this workspace. One build target corresponds to one classpath. For example, normally one sbt project maps to two build targets: main and test.
Project's Java: 11.0.19 located at /Users/yadukrishnankrishnan/Library/Caches/Coursier/arc/https/github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.19%252B7/OpenJDK11U-jdk_x64_mac_hotspot_11.0.19_7.tar.gz/jdk-11.0.19+7/Contents/Home
Build definition is coming from scala-cli.
Build server currently being used is scala-cli v1.5.0. ([Reset](command:metals.reset-choice?%5B%22Build+server+selection%22%5D))
⚠️ No build targets were detected in this workspace so most functionality won't work.
Make sure the workspace directory '/Users/yadukrishnankrishnan/Downloads/metals-test 2' matches the root of your build.
Try removing the directories .metals/ and .bloop/, then restart metals And import the build again.
Looks like Scala CLi is not returning any build targets, so it seems to be hanging somewhere. Is there any additional process started aside from Bloop and Metals? The jstack you sent is Bloop server itself and everything seems to be ok there.
I had killed all java processes and started the metals again in the same dir. Now I can see 2 java processes running.
daemon:/Users/yadukrishnankrishnan/Library/Caches/ScalaCli/bloop/daemon
scala.meta.metals.Main
Here is the sample zip file. The docker directive is commented out. I am doing the steps as follows exactly:
Run scala-cli setup-ide .
in this directory
open it in vscode (code .
)
In the metals sidebar, import and compile module. After indexing, it shows the run dialog correctly as expected. Attaching the screenshot.
Then, uncomment the docker directive
Clean up all the metadata hidden directories
Run scala-cli setup-ide .
Open in vs code code .
Import the project and clean and compile.
But, metals doesn't start. Here is the screenshot of that as well.
@tgodzik
Now, I added {"powerOptions":{"power":true}}
again into the ide launcher options. Did clean compile and it worked!
However, it still show the "Starts Metals", but also it shows then "run" dialog.
I am sure that this was not working yesterday. Not sure how or why!
Describe the bug
EmailClient.scala
Main.scala
Open this directory in vscode and try to start the metals. It doesn't start. You will get the error in the metals.log
Auto completion will not work but the code runs fine through command line. If you remove the docker directive, metals will start and everything works fine. Also, if there is only single file, then also no issues with this directive. The problem comes only with the combination of file directive and dockerFrom directive.
Expected behavior
It should be able to work normally
Operating system
macOS
Editor/Extension
VS Code
Version of Metals
1.3.5
Extra context or search terms
This is Mac M3, if that is relevant.