letsdiscodev / disco-cli

MIT License
3 stars 0 forks source link

first issue :-) #1

Open gregsadetsky opened 6 months ago

gregsadetsky commented 6 months ago

hey, tu me diras si ce n'est pas la bonne place pour ouvrir des issues

j'ai parti une machine Ubuntu 23.10 x64 sur digital ocean, et j'ai roulé disco init root@198.211.108.119 et à fin, j'ai obtenu ça:

........Traceback (most recent call last):
  File "/usr/local/bin/disco_init", line 33, in <module>
    sys.exit(load_entry_point('disco', 'console_scripts', 'disco_init')())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/disco/app/disco/scripts/init.py", line 60, in main
    start_disco_worker(host_home)
  File "/disco/app/disco/scripts/init.py", line 436, in start_disco_worker
    _run_cmd(
  File "/disco/app/disco/scripts/init.py", line 85, in _run_cmd
    raise Exception(f"Docker returned status {process.returncode}:\n{output}")
Exception: Docker returned status 1:
y6z2qpqtzpfjxjx63mq55ci1i
overall progress: 0 out of 1 tasks
1/1:  
overall progress: 0 out of 1 tasks
overall progress: 0 out of 1 tasks
overall progress: 0 out of 1 tasks
overall progress: 0 out of 1 tasks
Error response from daemon: rpc error: code = DeadlineExceeded desc = context deadline exceeded

Failed
gregsadetsky commented 6 months ago

j'ai tenté de re-rouler disco init et ça donne:

Installing Disco on root@198.211.108.119
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1664  100  1664    0     0  16584      0 --Docker already installed, not installing
:--:-- --:--:-- --:--:-- 16475
INFO:alembic.runtime.migration:Context impl SQLiteImpl.
INFO:alembic.runtime.migration:Will assume non-transactional DDL.
Creating Disco internal database
Setting initial state in internal database
Created API key: 9206d1e65e0fdad52a81fbf9bc7f2825
Traceback (most recent call last):
  File "/usr/local/bin/disco_init", line 33, in <module>
    sys.exit(load_entry_point('disco', 'console_scripts', 'disco_init')())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/disco/app/disco/scripts/init.py", line 38, in main
    create_caddy_socket_dir()
  File "/disco/app/disco/scripts/init.py", line 254, in create_caddy_socket_dir
    os.makedirs("/host/var/run/caddy")
  File "<frozen os>", line 225, in makedirs
FileExistsError: [Errno 17] File exists: '/host/var/run/caddy'
Failed
gregsadetsky commented 6 months ago

je réinstalle sur une nouvelle machine

une des premières lignes qui apparaît c'est:

"System is booting up. Unprivileged users are not permitted to log in yet. Please come back later. For technical details, see pam_nologin(8)."

mais l'installation semble e passer (ça semble le output de apt-get install)

puis, ça meurt ainsi:

No containers need to be restarted.

No user sessions are running outdated binaries.

No VM guests are running outdated hypervisor (qemu) binaries on this host.
Reading package lists...
E: Could not get lock /var/lib/apt/lists/lock. It is held by process 1753 (apt-get)
E: Unable to lock directory /var/lib/apt/lists/
Failed
gregsadetsky commented 6 months ago

ç'a fonctionné la troisième fois, la différence je crois que j'ai bel et bien attendu que le message "system is booting up" ne soit plus là

aussi, roules-tu un apt-get upgrade/update? juste curieux, je me demande si ce serait une bonne idée au init. ok j'ai une machine disco je continue :-)

antoineleclair commented 6 months ago

Pour le premier (timeout), je me demande si c'est une question de machine à 4$. J'ai pas eu cette erreur à date. J'utilise toujours la machine à 6$.

Peut-être que la machine à 4$ aurait besoin du swap dont je parlais.

C'est la commande que je roule quand je veux ajouter le swap de 2GB (qui est sûrement overkill).

fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo "/swapfile   none    swap    sw    0   0" >> /etc/fstab
antoineleclair commented 6 months ago

Pour les autres erreurs

/var/lib/apt/lists/lock

J'ai pas trouvé de workaround pour ça. Il faudrait faire plus de recherche.

En gros, quand la machine Digital Ocean boot, ils roulent "apt-get update" je pense dans le background. J'ai pas trouvé de moyen de juste attendre que leurs commandes soient terminées.

Pour workaround le problème, quand je boot une nouvelle machine, j'attends un peu avant de rouler init.

J'ai ce même problème pour un autre projet et on n'a jamais trouvé la solution.

antoineleclair commented 6 months ago

Par rapport à rouler nous même apt-get upgrade, j'ai le feeling qu'on ne devrait peut-être pas s'occuper de ça. Tant que Docker roule...

antoineleclair commented 6 months ago

Bref, peut-être qu'on devrait créer un issue pour

E: Could not get lock /var/lib/apt/lists/lock. It is held by process 1753 (apt-get)
E: Unable to lock directory /var/lib/apt/lists/
Failed

et essayer de trouver un moyen d'attendre.

La solution c'est peut-être de vérifier le status code de chaque commande une à une, et la retry avec un sleep jusqu'à ce que ça marche.

Parce que peut-être qu'une commande qui avait le lock va se terminer et qu'une autre va commencer. Ce qui nous a laissé le temps de rouler une commande, mais la prochaine fail.