Panel: Websocket does not stream data until reconnect if server boot fails (due to space/missing files/etc.)

Created on 19 May 2020  路  7Comments  路  Source: pterodactyl/panel

Background (please complete the following information):

  • Panel or Daemon: both :P
  • Version of Panel/Daemon: P: 1.0.0-beta4, W: 1.0.0-beta5
  • Server's OS: Ubuntu 18.04
  • Your Computer's OS & Browser: MacOS, Chrome

Describe the bug
When restarting one of the servers, I've gotten: https://hastebin.com/avijopevuj.pl
After that error, the panel for that server got glitched.

To Reproduce
Steps to reproduce the behavior: I'm not sure... Maybe if the server has an error and is unable to start, the panel will brick not stream data until reconnect.

EDIT: More details below

Expected behavior
The server should stop, the error message should be printed in the server-console and the panel should not brick.

bug

All 7 comments

Can you at least say what server this happened with? Nothing here is reproducible.

I think I've just found out a simple way to reproduce it. It seems like wings is unable to handle any errors. For example: remove server.jar, try to boot up the server. After that, the error will appear in wings. Now try to put the server.jar back and the panel (console) will remain bricked, and will no longer update, unless refreshing the page.

It happens with BungeeCord & Spigot, but I assume it would happen on any other game server.

I've seen this happen as well, but in a different scenario : Create a server with like 10mb (any amount as long as the server doesn't have enough disk) of disk space, the server will install but won't start, attempt to start it (it will fail again). Then increase the disk space to 10gb or w.e the server requires, and attempt to start it again, it will start however the panel will not update (websocket doesn't seem to be sending any data back), you won't see anything in the console unless you refresh the page.

I've seen this happen as well, but in a different scenario : Create a server with like 10mb (any amount as long as the server doesn't have enough disk) of disk space, the server will install but won't start, attempt to start it (it will fail again). Then increase the disk space to 10gb or w.e the server requires, and attempt to start it again, it will start however the panel will not update (websocket doesn't seem to be sending any data back), you won't see anything in the console unless you refresh the page.

Exactly, Wings is completely unable to handle any errors and will brick not be able to stream data until reconnect if those occur.

That is not really bricking, that's just it doesn't auto-refresh and reconnect to a valid socket. Bricking would imply that wings or the panel becomes completely unusable without manual code editing/data modification.

I think I actually fixed this in https://github.com/pterodactyl/wings/commit/82ffb9804d40e16a636ca18cd867d7fae10df436

Basically, I was trying to send the error over the websocket, but it locked up the handler trying to get two locks at the same time. Ergo, no error, and no more websocket data.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

stijnb1234 picture stijnb1234  路  3Comments

JanDevDE picture JanDevDE  路  4Comments

Games4k picture Games4k  路  3Comments

dennorske picture dennorske  路  4Comments

WeatherSquad picture WeatherSquad  路  3Comments