Skip to content
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

🐛 __print_socket error: Operation not supported within DevContainer #273

Open
2 of 3 tasks
ffMathy opened this issue Jul 19, 2024 · 28 comments
Open
2 of 3 tasks
Labels

Comments

@ffMathy
Copy link

ffMathy commented Jul 19, 2024

VS Code version

1.91.1

Extension version

2.3.0

Biome version

0.3.3

Operating system

  • Windows
  • macOS
  • Linux

Description

[Error - 8:52:56 AM] Biome client: couldn't create connection to server.
Error: Command "/root/.vscode-server/data/User/workspaceStorage/239514837f70024c3fa8574e87e6a278/biomejs.biome/biome __print_socket" exited with code 1
Output:
internalError/io ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Errors occurred while executing I/O operations.
    
    Caused by:
      Operation not supported (os error 95)
  
	at getSocket (/root/.vscode-server/extensions/biomejs.biome-2.2.2/out/main.js:36605:11)
	at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
	at async createMessageTransports (/root/.vscode-server/extensions/biomejs.biome-2.2.2/out/main.js:36619:16)
	at async LanguageClient2.createConnection (/root/.vscode-server/extensions/biomejs.biome-2.2.2/out/main.js:15598:28)
	at async LanguageClient2.start (/root/.vscode-server/extensions/biomejs.biome-2.2.2/out/main.js:15174:30)
	at async activate (/root/.vscode-server/extensions/biomejs.biome-2.2.2/out/main.js:36368:3)
	at async o.n (/vscode/vscode-server/bin/linux-arm64/5c3e652f63e798a5ac2f31ffd0d863669328dc4c/out/vs/workbench/api/node/extensionHostProcess.js:144:6237)
	at async o.m (/vscode/vscode-server/bin/linux-arm64/5c3e652f63e798a5ac2f31ffd0d863669328dc4c/out/vs/workbench/api/node/extensionHostProcess.js:144:6200)
	at async o.l (/vscode/vscode-server/bin/linux-arm64/5c3e652f63e798a5ac2f31ffd0d863669328dc4c/out/vs/workbench/api/node/extensionHostProcess.js:144:5657)

Steps to reproduce

Use the following Dockerfile as your DevContainer in VS Code, with the "dev-container" multi-stage image as the target:

FROM node:lts AS npm-packages
WORKDIR /src


FROM pulumi/pulumi-base:3.124.0 AS pulumi


FROM node:lts AS kubectl
WORKDIR /usr/local/bin

# install kubectl: https://stackoverflow.com/questions/51717471/how-to-install-kubectl-in-kubernetes-container-through-docker-image
RUN curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl" \
    && chmod +x ./kubectl \
    && curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 \
    && chmod +x get_helm.sh && ./get_helm.sh


FROM node:lts AS dev-container
WORKDIR /src
SHELL ["/bin/bash", "-c"]

# install global NPM packages
RUN npm install --force --global pnpm
RUN SHELL=bash pnpm setup
ENV PNPM_HOME="/root/.local/share/pnpm"
ENV PATH="/root/.local/share/pnpm:$PATH"
RUN pnpm install --force --global \
  nx \
  playwright \
  biome \
  vitest

RUN rm -f /etc/apt/apt.conf.d/docker-clean; echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
  --mount=type=cache,target=/var/lib/apt,sharing=locked \
  apt update && \
  playwright install-deps && \
  playwright install && \
  apt-get install --no-install-recommends -y \
  less \
  # install root certificates
  ca-certificates \
  # install JQ, needed for SSO integration for AWS: https://stackoverflow.com/questions/71789124/unable-to-use-jq-inside-docker-container-even-after-installing-jq-as-part-of-the
  jq \
  # install Azure CLI, needed for SSO integration for AWS: https://stackoverflow.com/questions/62030499/azure-cli-in-a-docker-container
  curl \
  apt-transport-https \
  lsb-release gnupg \
  # install Vim (often used to modify EKS ConfigMap): https://stackoverflow.com/questions/31515863/how-to-run-vi-on-docker-container
  vim \
  # install xdg to support opening browsers from within the devcontainer, needed for AWS SSO.
  xdg-utils \
  # install Python (needed for installation of UV)
  python3 \
  python3-pip \
  python3-dev \
  python3-venv \
  # install GCC (needed for installation of UV)
  gcc \
  # install and groff unzip (needed for installation of AWS CLI)
  unzip \
  groff

# install AWS CLI
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m).zip" -o "awscliv2.zip" && \
    unzip awscliv2.zip && ./aws/install

# install uv (needed for installing from requirements.txt)
RUN python3 -m pip install uv --break-system-packages

# install root certificates
COPY .devcontainer/certs/* /usr/local/share/ca-certificates/
RUN update-ca-certificates

# install Docker: https://stackoverflow.com/questions/44451859/how-to-install-docker-in-docker-container
RUN curl -fsSL https://get.docker.com | sh

# install GitHub CLI: https://github.com/cli/cli/blob/trunk/docs/install_linux.md
RUN curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \
  && chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \
  && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
  && apt update \
  && apt install gh -y

# install Python packages
COPY requirements.txt ./
RUN python3 -m venv /venv
ENV VIRTUAL_ENV=/venv
ENV PATH="${PATH}:/venv/bin"
RUN uv pip install --prerelease=allow -r requirements.txt 

# copy Pulumi binaries
ENV PATH="${PATH}:/root/pulumi/bin"
COPY --chmod=755 --from=pulumi /pulumi/bin /root/pulumi/bin
RUN pulumi version

# copy kubectl binaries
ENV PATH="${PATH}:/root/bin/kubectl"
COPY --chmod=755 --from=kubectl /usr/local/bin /root/bin/kubectl
RUN kubectl version --client=true

# sleeping forever is required for DevContainers.
CMD [ "sleep", "infinity" ]

I am running Docker on Mac, but the image is a Linux image.

Expected behavior

I expected it to not fail.

Does this issue occur when using the CLI directly?

Not sure / Not applicable

Logs

Biome binary found at /workspaces/WATS/node_modules/.pnpm/@biomejs+cli-linux-arm64@1.8.3/node_modules/@biomejs/cli-linux-arm64/biome
Copying binary to temporary folder: file:///root/.vscode-server/data/User/workspaceStorage/e9d52a12c52088523ba00cfaa5b63593/biomejs.biome/biome
Executing Biome from: /root/.vscode-server/data/User/workspaceStorage/e9d52a12c52088523ba00cfaa5b63593/biomejs.biome/biome
[cli-stderr] data 222
[cli-stderr] end
[cli-stderr] finish
[cli-stdout] end
[cli-stdout] finish
[cli] exit 1
[Error - 3:16:00 PM] Biome client: couldn't create connection to server.
Error: Command "/root/.vscode-server/data/User/workspaceStorage/e9d52a12c52088523ba00cfaa5b63593/biomejs.biome/biome __print_socket" exited with code 1
Output:
internalError/io ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Errors occurred while executing I/O operations.
    
    Caused by:
      Operation not supported (os error 95)
  


	at getSocket (/root/.vscode-server/extensions/biomejs.biome-2.3.0/out/main.js:36539:11)
	at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
	at async createMessageTransports (/root/.vscode-server/extensions/biomejs.biome-2.3.0/out/main.js:36553:16)
	at async LanguageClient2.createConnection (/root/.vscode-server/extensions/biomejs.biome-2.3.0/out/main.js:15548:28)
	at async LanguageClient2.start (/root/.vscode-server/extensions/biomejs.biome-2.3.0/out/main.js:15124:30)
	at async activate (/root/.vscode-server/extensions/biomejs.biome-2.3.0/out/main.js:36294:3)
	at async c.n (/vscode/vscode-server/bin/linux-arm64/f1e16e1e6214d7c44d078b1f0607b2388f29d729/out/vs/workbench/api/node/extensionHostProcess.js:146:6384)
	at async c.m (/vscode/vscode-server/bin/linux-arm64/f1e16e1e6214d7c44d078b1f0607b2388f29d729/out/vs/workbench/api/node/extensionHostProcess.js:146:6347)
	at async c.l (/vscode/vscode-server/bin/linux-arm64/f1e16e1e6214d7c44d078b1f0607b2388f29d729/out/vs/workbench/api/node/extensionHostProcess.js:146:5804)
[cli-stdout] close
[cli] close 1
[cli-stderr] close
@ffMathy ffMathy added the Triage label Jul 19, 2024
@nhedger
Copy link
Member

nhedger commented Jul 19, 2024

Thanks for the report. Would you mind providing a reproduction repo that contains the devcontainer configuration already set up ?

@ffMathy
Copy link
Author

ffMathy commented Jul 19, 2024

Sure! Here is a minimal repro where I just tested that it still happens: https://github.com/ffMathy/biome-repro-1

Remember to start the project in the Dev Container. I also think it is necessary to run it from a Mac machine.

Here are my Docker settings:
image

@nhedger
Copy link
Member

nhedger commented Jul 21, 2024

Hey, I appreciate you taking the time. However, I'm not able to start the dev container because some mounts seem to be missing. It looks like this may be related to your personal setup. If you could provide a minimal setup, it would go a long way.

@ffMathy
Copy link
Author

ffMathy commented Jul 21, 2024

Actually I don't think the mounts are needed to repro it. I just forgot to remove those.

@ffMathy
Copy link
Author

ffMathy commented Aug 19, 2024

@nhedger any update given my reply? I updated the repro now to remove the bind mounts.

@ematipico
Copy link
Member

We will fix this in v3 #201

@nhedger
Copy link
Member

nhedger commented Aug 22, 2024

Should be fixed in the latest nightly.

@nhedger nhedger closed this as completed Aug 22, 2024
@ffMathy
Copy link
Author

ffMathy commented Sep 10, 2024

@nhedger this is still an issue in the latest nightly. Can you reopen this?

Log output (from "Biome LSP"):

2024-09-10 06:40:59.221 [info] [Error - 6:40:59 AM] Server initialization failed.
2024-09-10 06:40:59.221 [info]   Message: Cannot call write after a stream was destroyed
  Code: -32099 
2024-09-10 06:40:59.221 [info] [Error - 6:40:59 AM] biome client: couldn't create connection to server.
2024-09-10 06:40:59.221 [info]   Message: Cannot call write after a stream was destroyed
  Code: -32099 
2024-09-10 06:40:59.221 [info] [Info  - 6:40:59 AM] Connection to server got closed. Server will restart.
2024-09-10 06:40:59.221 [info] true
2024-09-10 06:40:59.221 [info] internalError/io ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Errors occurred while executing I/O operations.
    
    Caused by:
      Not supported (os error 95)
  


2024-09-10 06:40:59.221 [info] [Error - 6:40:59 AM] Server initialization failed.
2024-09-10 06:40:59.221 [info]   Message: Cannot call write after a stream was destroyed
  Code: -32099 
2024-09-10 06:40:59.221 [info] [Error - 6:40:59 AM] biome client: couldn't create connection to server.
2024-09-10 06:40:59.221 [info]   Message: Cannot call write after a stream was destroyed
  Code: -32099 
2024-09-10 06:40:59.221 [info] [Error - 6:40:59 AM] Restarting server failed
2024-09-10 06:40:59.221 [info]   Message: Cannot call write after a stream was destroyed
  Code: -32099 
2024-09-10 06:40:59.221 [info] [Info  - 6:40:59 AM] Connection to server got closed. Server will restart.
2024-09-10 06:40:59.221 [info] true
2024-09-10 06:40:59.256 [info] internalError/io ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Errors occurred while executing I/O operations.
    
    Caused by:
      Not supported (os error 95)
  


2024-09-10 06:40:59.266 [info] [Error - 6:40:59 AM] Client biome: connection to server is erroring. Shutting down server.
2024-09-10 06:40:59.266 [info] [Error - 6:40:59 AM] Stopping server failed
2024-09-10 06:40:59.266 [info] Error: Client is not running and can't be stopped. It's current state is: starting
    at BiomeLanguageClient.shutdown (/root/.vscode-server/extensions/biomejs.biome-2024.9.91939/out/index.js:46792:20)
    at BiomeLanguageClient.stop (/root/.vscode-server/extensions/biomejs.biome-2024.9.91939/out/index.js:46763:22)
    at BiomeLanguageClient.stop (/root/.vscode-server/extensions/biomejs.biome-2024.9.91939/out/index.js:47643:23)
    at BiomeLanguageClient.handleConnectionError (/root/.vscode-server/extensions/biomejs.biome-2024.9.91939/out/index.js:47024:19)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at runNextTicks (node:internal/process/task_queues:64:3)
    at processImmediate (node:internal/timers:449:9)
2024-09-10 06:40:59.266 [info] [Error - 6:40:59 AM] Server initialization failed.
2024-09-10 06:40:59.266 [info]   Message: write EPIPE
  Code: -32099 
2024-09-10 06:40:59.266 [info] [Error - 6:40:59 AM] biome client: couldn't create connection to server.
2024-09-10 06:40:59.266 [info]   Message: write EPIPE
  Code: -32099 
2024-09-10 06:40:59.266 [info] [Error - 6:40:59 AM] Restarting server failed
2024-09-10 06:40:59.266 [info]   Message: write EPIPE
  Code: -32099 
2024-09-10 06:40:59.266 [info] [Info  - 6:40:59 AM] Connection to server got closed. Server will restart.
2024-09-10 06:40:59.266 [info] true
2024-09-10 06:40:59.292 [info] internalError/io ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Errors occurred while executing I/O operations.
    
    Caused by:
      Not supported (os error 95)
  


2024-09-10 06:40:59.293 [info] [Error - 6:40:59 AM] Server initialization failed.
2024-09-10 06:40:59.293 [info]   Message: Cannot call write after a stream was destroyed
  Code: -32099 
2024-09-10 06:40:59.293 [info] [Error - 6:40:59 AM] biome client: couldn't create connection to server.
2024-09-10 06:40:59.293 [info]   Message: Cannot call write after a stream was destroyed
  Code: -32099 
2024-09-10 06:40:59.293 [info] [Error - 6:40:59 AM] Restarting server failed
2024-09-10 06:40:59.293 [info]   Message: Cannot call write after a stream was destroyed
  Code: -32099 
2024-09-10 06:40:59.293 [info] [Info  - 6:40:59 AM] Connection to server got closed. Server will restart.
2024-09-10 06:40:59.293 [info] true
2024-09-10 06:40:59.310 [info] internalError/io ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Errors occurred while executing I/O operations.
    
    Caused by:
      Not supported (os error 95)
  


2024-09-10 06:40:59.312 [info] internalError/io ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Errors occurred while executing I/O operations.
    
    Caused by:
      Not supported (os error 95)
  


2024-09-10 06:40:59.324 [info] [Error - 6:40:59 AM] Server initialization failed.
2024-09-10 06:40:59.324 [info]   Message: Pending response rejected since connection got disposed
  Code: -32097 
2024-09-10 06:40:59.324 [info] [Error - 6:40:59 AM] The biome server crashed 5 times in the last 3 minutes. The server will not be restarted. See the output for more information.
2024-09-10 06:40:59.324 [info] [Error - 6:40:59 AM] biome client: couldn't create connection to server.
2024-09-10 06:40:59.324 [info]   Message: Pending response rejected since connection got disposed
  Code: -32097 

@ffMathy
Copy link
Author

ffMathy commented Sep 10, 2024

I can now confirm that only our Mac users are having this issue. The people with Windows work just fine.

@nhedger
Copy link
Member

nhedger commented Sep 10, 2024

Thanks for the deets, I'll try to reproduce it later today

@nhedger
Copy link
Member

nhedger commented Sep 10, 2024

Because Biome is installed globally using PNPM

RUN pnpm install --force --global \
  nx \
  playwright \
  biome \
  vitest

and /root/.local/share/pnpm is in the PATH

ENV PATH="/root/.local/share/pnpm:$PATH"

the extension's Path Environment strategy is resolving the Biome binary to

/root/.local/share/pnpm/biome

This fails because /root/.local/share/pnpm/biome is not the real Biome binary, but a wrapper shell script.


There are a couple of solutions:

  • Install Biome as part of your project's dependencies (if possible), and the extension will detect the correct binary for you

  • Install the actual Biome binary globally (make sure to uninstall it from the global pnpm store)

     RUN curl -L "https://github.com/biomejs/biome/releases/download/cli%2Fv1.8.3/biome-linux-x64" -o biome \
       && chmod +x biome \
       && mv biome /usr/local/bin/biome

@nhedger nhedger closed this as completed Sep 10, 2024
@ffMathy
Copy link
Author

ffMathy commented Sep 10, 2024

I already have it installed in my project's dependencies too, as well as global. It's still happening.

@nhedger
Copy link
Member

nhedger commented Sep 10, 2024

The reproduction you provided did not include project dependencies. Please update your reproduction with the relevant setup.

@nhedger nhedger reopened this Sep 10, 2024
@ffMathy
Copy link
Author

ffMathy commented Sep 10, 2024

Alright, fair enough, but then I tried installing the package with the Dockerfile command you provided.

Here's the log output:

2024-09-10 19:32:28.042 [info] internalError/io ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Errors occurred while executing I/O operations.
2024-09-10 19:32:28.043 [info] 
    
    Caused by:
      Not supported (os error 95)
  


2024-09-10 19:32:28.043 [info] [Error - 7:32:28 PM] Server initialization failed.
2024-09-10 19:32:28.043 [info]   Message: Pending response rejected since connection got disposed
  Code: -32097 
2024-09-10 19:32:28.043 [info] [Info  - 7:32:28 PM] Connection to server got closed. Server will restart.
2024-09-10 19:32:28.043 [info] true
2024-09-10 19:32:28.044 [info] [Error - 7:32:28 PM] biome client: couldn't create connection to server.
2024-09-10 19:32:28.044 [info]   Message: Pending response rejected since connection got disposed
  Code: -32097 
2024-09-10 19:32:28.062 [info] internalError/io ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Errors occurred while executing I/O operations.
    
    Caused by:
      Not supported (os error 95)
  

2024-09-10 19:32:28.062 [info] 

2024-09-10 19:32:28.063 [info] [Error - 7:32:28 PM] Server initialization failed.
2024-09-10 19:32:28.063 [info]   Message: Pending response rejected since connection got disposed
  Code: -32097 
2024-09-10 19:32:28.063 [info] [Info  - 7:32:28 PM] Connection to server got closed. Server will restart.
2024-09-10 19:32:28.063 [info] true
2024-09-10 19:32:28.063 [info] [Error - 7:32:28 PM] biome client: couldn't create connection to server.
2024-09-10 19:32:28.063 [info]   Message: Pending response rejected since connection got disposed
  Code: -32097 
2024-09-10 19:32:28.080 [info] internalError/io ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Errors occurred while executing I/O op
2024-09-10 19:32:28.081 [info] erations.
    
    Caused by:
      Not supported (os error 95)
  


2024-09-10 19:32:28.082 [info] [Error - 7:32:28 PM] Server initialization failed.
2024-09-10 19:32:28.082 [info]   Message: Pending response rejected since connection got disposed
  Code: -32097 
2024-09-10 19:32:28.082 [info] [Info  - 7:32:28 PM] Connection to server got closed. Server will restart.
2024-09-10 19:32:28.082 [info] true
2024-09-10 19:32:28.082 [info] [Error - 7:32:28 PM] biome client: couldn't create connection to server.
2024-09-10 19:32:28.082 [info]   Message: Pending response rejected since connection got disposed
  Code: -32097 
2024-09-10 19:32:28.082 [info] [Error - 7:32:28 PM] Restarting server failed
2024-09-10 19:32:28.082 [info]   Message: Pending response rejected since connection got disposed
  Code: -32097 
2024-09-10 19:32:28.100 [info] internalError/io ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


2024-09-10 19:32:28.100 [info]   × Errors occurred while executing I/O operations.
    
    Caused by:
      Not supported (os error 95)
  


2024-09-10 19:32:28.100 [info] [Error - 7:32:28 PM] Server initialization failed.
2024-09-10 19:32:28.100 [info]   Message: Pending response rejected since connection got disposed
  Code: -32097 
2024-09-10 19:32:28.100 [info] [Info  - 7:32:28 PM] Connection to server got closed. Server will restart.
2024-09-10 19:32:28.100 [info] true
2024-09-10 19:32:28.101 [info] [Error - 7:32:28 PM] biome client: couldn't create connection to server.
2024-09-10 19:32:28.101 [info]   Message: Pending response rejected since connection got disposed
  Code: -32097 
2024-09-10 19:32:28.101 [info] [Error - 7:32:28 PM] Restarting server failed
2024-09-10 19:32:28.101 [info]   Message: Pending response rejected since connection got disposed
  Code: -32097 
2024-09-10 19:32:28.117 [info] internalError/io ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Errors occurred while executing I/O operations.
    
    Caused by:
      Not supported (os error 95)
  


2024-09-10 19:32:28.118 [info] [Error - 7:32:28 PM] Server initialization failed.
2024-09-10 19:32:28.118 [info]   Message: Pending response rejected since connection got disposed
  Code: -32097 
2024-09-10 19:32:28.118 [info] [Error - 7:32:28 PM] The biome server crashed 5 times in the last 3 minutes. The server will not be restarted. See the output for more information.
2024-09-10 19:32:28.118 [info] [Error - 7:32:28 PM] biome client: couldn't create connection to server.
2024-09-10 19:32:28.118 [info]   Message: Pending response rejected since connection got disposed
  Code: -32097 
2024-09-10 19:32:28.118 [info] [Error - 7:32:28 PM] Restarting server failed
2024-09-10 19:32:28.118 [info]   Message: Pending response rejected since connection got disposed
  Code: -32097 

@nhedger nhedger added Needs reproduction Needs a reproduction and removed Triage labels Sep 11, 2024
@nhedger
Copy link
Member

nhedger commented Sep 11, 2024

I see that you devcontainer config also references the latest stable version of the extension. Have you tried with the pre-release ?

"customizations": {
  "vscode": {
    "extensions": [
-      "biomejs.biome"
+      "biomejs.biome@prerelease" 
    ]
  }
},

@ffMathy
Copy link
Author

ffMathy commented Sep 11, 2024

Yeah, what I just do when I start up is to manually go in and switch to prerelease in the Extensions tab after the dev container has been built the first time.

My version in the above was: v2024.9.91939

@nhedger
Copy link
Member

nhedger commented Sep 11, 2024

I'm wondering if that leaves the devcontainer in a weird state. When I start it with the @prerelease, the extension starts without issues. I'm also on macOS.

@ffMathy
Copy link
Author

ffMathy commented Sep 11, 2024

Do you have the same settings in Docker as I posted above in the screenshot? More specifically, I am suspecting the "filesystem" part might be relevant.

Edit: Changing to @prerelease in the devcontainer file doesn't help for me.

@ffMathy
Copy link
Author

ffMathy commented Sep 11, 2024

I wish the extension could somehow debug on which line it's happening. Is that possible to retrieve somehow? Then maybe I can also help a bit.

@nhedger
Copy link
Member

nhedger commented Sep 11, 2024

Do you have the same settings in Docker as I posted above in the screenshot? More specifically, I am suspecting the "filesystem" part might be relevant.

Edit: Changing to @prerelease in the devcontainer file doesn't help for me.

I actually run OrbStack by default, but I just installed Docker Desktop and confirm that it works even with the same Docker settings as shown in your screenshot.

I wish the extension could somehow debug on which line it's happening. Is that possible to retrieve somehow? Then maybe I can also help a bit.

It is possible to debug the extension, but I don't know how/if this works in a devcontainer.

Edit: looks like it's possible, I pushed a devcontainer config to the repo if you'd like to try and reproduce.

@ffMathy
Copy link
Author

ffMathy commented Sep 12, 2024

I tried starting the project from the DevContainer.

I get this error:
image

Also, did you click "Reopen in Container" or "Clone in Volume"? I always use "Clone in Volume" because it's way faster. That is required by my own project. Perhaps that's what makes it so that you can't repro?

@ffMathy
Copy link
Author

ffMathy commented Sep 13, 2024

After switching away from PNPM to Bun, all my issues (even with the old Biome) went away.

So must be related to how node_modules gets built.

In our project, we also had a .npmrc of these contents:

symlink=true
shamefully-hoist=true

@ffMathy
Copy link
Author

ffMathy commented Sep 24, 2024

Okay, it started happening again. Interestingly, when it happens, if I rebuild the DevContainer, it stops happening.

I noticed that by running tests a lot, we open a lot of ports. Could it have something to do with it trying to open sockets, but being exhausted due to some maximum socket count?

Does Biome try to communicate with any form of network connection somehow?

@ematipico
Copy link
Member

The current version of the extension does communicate with the Biome Daemon via sockets.

I suggest you try the preview release of the extension, which changes the way the extension connects to the Daemon (it won't use sockets anymore)

@ffMathy
Copy link
Author

ffMathy commented Sep 24, 2024

Then I don't think sockets is the root cause. Because when I was using the prerelease version earlier, it'd fail in the same way with the same error.

Right now, switching to the prerelease version of Biome does indeed work, but then again, I also currently can't repro the issue with the old stable version of Biome.

So let's leave this issue open until it happens again, and I can fully decide if switching to the prerelease will work.

But since I do not believe it will, can we theorize as to what might then be causing it? What kind of file-related operations is the Biome VS Code extension trying to do?

Can it have something to do with symlinking, binary aliases, long path names, or something similar?

@ffMathy
Copy link
Author

ffMathy commented Oct 17, 2024

Can we insert more logging to maybe find the cause?

Any suggestions on how I can help? ❤️

@nhedger
Copy link
Member

nhedger commented Oct 18, 2024

I'd like to focus on releasing the current prerelease as stable. In your previous you mentioned switching to the prerelease kinda solved it. Are you now experiencing it also on the prerelease ? If so, we can try adding some more logging when we create the LSP session.

@ffMathy
Copy link
Author

ffMathy commented Oct 18, 2024

It still happens on the pre release. For both prerelease and current stable, it doesn't happen if I rebuild my container without cache and reinstall all my dependencies.

Never tried just one of those, so not sure which one solves it.

But then after some time, it starts happening. Also on prerelease. The latest logs I posted were from the prerelease.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants