scalameta / metals-vscode

Visual Studio Code extension for Metals
https://marketplace.visualstudio.com/items?itemName=scalameta.metals#overview
Apache License 2.0
300 stars 76 forks source link

Downloading new Metals version should be retried in case of issues #176

Open tgodzik opened 4 years ago

tgodzik commented 4 years ago

Describe the bug

Downloading Metals might timeout and it's rather hard for user to retry.

Expected behavior

Message to the user with actionable option to retry downloading.

Additional context

Reported by @soronpo when updating to 0.8.0

Search terms

conenction internet download coursier

olafurpg commented 4 years ago

Do we have logs for this error? Metals always “retries” by nature of calling coursier on every server start. I’m not sure we should retry on the metals side

soronpo commented 4 years ago

What logs should I produce?

tgodzik commented 4 years ago

Do we have logs for this error? Metals always “retries” by nature of calling coursier on every server start. I’m not sure we should retry on the metals side

@olafurpg We need to run restart manually, it would be useful create a MessageRequest that provides us with a capability to restart but without relaoding

What logs should I produce?

@soronpo from .metals/metals.log where the download failed

soronpo commented 4 years ago

I got the part where it failed to download the Semantic DB:

The server is listening for incoming connections at tcp://127.0.0.1:34252...
Starting thread that pumps stdin and redirects it to the bsp server...
Starting thread that pumps server stdout and redirects it to the client stdout...
INFO  tracing is disabled for protocol BSP, to enable tracing of incoming and outgoing JSON messages create an empty file at /home/soronpo/.cache/metals/bsp.trace.json
WARN  Stopped configuration of SemanticDB in Scala 2.13.1 projects: Error downloading org.scalameta:semanticdb-scalac_2.13.1:4.3.0
  not found: /home/soronpo/.ivy2/local/org.scalameta/semanticdb-scalac_2.13.1/4.3.0/ivys/ivy.xml
  download error: Caught javax.net.ssl.SSLException: readHandshakeRecord (readHandshakeRecord) while downloading https://repo1.maven.org/maven2/org/scalameta/semanticdb-scalac_2.13.1/4.3.0/semanticdb-scalac_2.13.1-4.3.0.pom
  not found: https://dl.bintray.com/scalacenter/releases/org/scalameta/semanticdb-scalac_2.13.1/4.3.0/semanticdb-scalac_2.13.1-4.3.0.pom
INFO  time: connected to build server in 12s
olafurpg commented 4 years ago

@soronpo are you behind a VPN?

soronpo commented 4 years ago

Possibly. This error is on my university's computer.

dbarvitsky commented 1 year ago

Similar issue here. Probably not metals' problem, rather coursier's issue but still. The downloads from repo1.maven.org are known to connection-reset at times, and since install pulls a lot of jars at startup, it is not uncommon for server install to fail. On a bad day it happens to me 2-3 times in a row easily.

I do development in containers, so "Rebuild container" command typically helps, as mentioned, on 2nd-3rd try the worst case.

Perhaps joining forces with sbt (sbt-7200) might persuade the coursier implement transparent retries throughout?