coder / code-server

VS Code in the browser
https://coder.com
MIT License
68.65k stars 5.63k forks source link

Unix socket always be deleted after 3 hours when client disconnect #7084

Open Mars160 opened 1 day ago

Mars160 commented 1 day ago

Is there an existing issue for this?

OS/Web Information

Steps to Reproduce

  1. run code-server with —socket and —socket-mode options behind nginx
  2. client to code-server, write something and disconnect
  3. wait for 3 hours
  4. the socket file is disappeared

logs below:


 [<unknown>][8ae2717b][ManagementConnection] The client has disconnected, will wait for reconnection 3h b>
11月 21 23:30:33 archlinux code-server[561098]: [23:30:33] [<unknown>][31fa6d6d][ExtensionHostConnection] <576182> Extension Host Process exited with code: 0, sign>
11月 21 23:30:36 archlinux code-server[561098]: [23:30:36] [<unknown>][4fe5bbb1][ExtensionHostConnection] <589581> Extension Host Process exited with code: 0, sign>
11月 21 23:30:36 archlinux code-server[561098]: [23:30:36] [<unknown>][4bad56e8][ExtensionHostConnection] <565453> Extension Host Process exited with code: 0, sign>
11月 21 23:30:42 archlinux code-server[561098]: [23:30:42] [<unknown>][550a7a3d][ExtensionHostConnection] <573629> Extension Host Process exited with code: 0, sign>
11月 21 23:31:09 archlinux code-server[561098]: [23:31:09] [<unknown>][8ae2717b][ManagementConnection] The reconnection grace time of 3h has expired, so the connec>

You will never reconnect to code-server because the socket file is delete.

Expected

Never delete the socket file unless code-server is stopped

Actual

It deleted!

Logs

Screenshot/Video

No response

Does this bug reproduce in native VS Code?

This cannot be tested in native VS Code

Does this bug reproduce in GitHub Codespaces?

I did not test GitHub Codespaces

Are you accessing code-server over a secure context?

Notes

my nginx config:


server {
    include common/listen-8096;
    server_name my.super.server;
    # set max upload size
    client_max_body_size 32G;
    fastcgi_buffers 64 4K;

    location / {
        proxy_pass http://unix:/dev/shm/code-server.sock;

        add_header Access-Control-Allow-Origin *;
         add_header Access-Control-Allow-Methods *;
         add_header Access-Control-Allow-Headers *;

         # proxy_ssl_verify off;
         proxy_set_header Host $host;
         proxy_set_header Accept-Encoding gzip;
         #proxy_set_header X-Forwarded-Host $host;
         proxy_set_header X-Forwarded-Host $host:$server_port;

         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection $http_connection;
         proxy_http_version 1.1;

        access_log /var/log/nginx/code.log;
        error_log /var/log/nginx/code.error.log;
    }  
}

And systemctl edit code-server.service:


### Anything between here and the comment below will become the contents of the drop-in file

[Service]
ExecStart=
ExecStart=/usr/bin/code-server /my/super/path
User=superuser
Group=superuser

### Edits below this comment will be discarded

### /usr/lib/systemd/system/code-server@.service
# [Unit]
# Description=code-server
# After=network.target
# 
# [Service]
# Type=exec
# ExecStart=/usr/bin/code-server
# Restart=always
# User=%i
# 
# [Install]
# WantedBy=default.target

And the config.yaml

auth: password
password: mysuperpassword
cert: false
socket: /dev/shm/code-server.sock
socket-mode: 666
code-asher commented 7 hours ago

Are you sure the socket is deleted? That socket should be unrelated to the web socket in the console messages (the three hour one).

The timeout is one specified by VS Code, not us, but we could patch it if we really need to. From what I understand, it is really just meant to reconnect when there is a blip in the network. Reloading the page should result in a new connection, but is that not working either?

Mars160 commented 3 hours ago

https://github.com/user-attachments/assets/52865b27-9e5a-4fad-aed6-51b5be51c6b3

@code-asher Thanks for your reply and I’m pretty sure the socket file is gone