Restarting servers can take a LONG time


2 whole minutes to restart 1 server with 19 people, with 3 survivors of this failed restart, everyone else left because they didn’t get teleported

Expected behavior

No more than 10 seconds to get players in a new server.

Page URL: https://create.roblox.com/dashboard/creations/experiences/2140124704/server-management?annotation=Announcement

2 Likes

Seems like they made soft shutdowns irrelevant. :man_shrugging:
I’ve used soft shutdown scripts and have had decent luck. Perhaps try that?

Thanks for filing a bug report. Is it consistently taking 2 minutes to restart one server? If so, the most likely answer is that you have a hanging BindToClose callback that is preventing the server from shutting down

1 Like

Well it happens randomly and I shouldn’t have something like that. Most are successes, some turn out like this. Also a bind to close shouldn’t prevent players from teleporting, they should move to a new server as soon as it’s created

Most are successes, some turn out like this

The example you screenshotted is too old for me to check logs. Can you post back here next time it happens so we can look at logs? Thanks

Also a bind to close shouldn’t prevent players from teleporting, they should move to a new server as soon as it’s created

The purpose of BindToClose is for you to run whatever code you need to do before players leave the server. For example, saving data about the player wouldn’t work if they’ve already been teleported away. BindToClose is entirely in your control - if you don’t have any callbacks then players will be teleported away the moment a server is created, just as your desired behavior

I shouldn’t have something like that

I’d encourage you to double check and confirm you’re not using BindToClose anywhere

Yeah

Players can leave the server and join a new one no matter the bind to close, when it takes more than 2 minutes it doesn’t solve anything. Also I don’t think i have a bind to close anyway that’s responsible otherwise it’d happen every single time.

Well if I was and it was the cause wouldn’t that happen every single time?

Players can leave the server and join a new one no matter the bind to close, when it takes more than 2 minutes it doesn’t solve anything.

Two minutes is the timeout to execute whatever code a dev chooses to put in it. Again, devs are in total control of what’s happening here

Well if I was and it was the cause wouldn’t that happen every single time?

In the case I linked above the hang depended on a race condition in the dev’s BindToClose callback, so it’s possible it doesn’t happen every time. Anyways, if we can look at logs next time we’ll be able to see if the hang is a BindToClose callback or not

Sure the server should stay up the players shouldn’t remain there for more than 10 seconds

Alrighty

Ok this time it’s WAY WORSE, idk why it says it took 2 minutes it took longer like 5

1 Like

Same issue happened to me when trying to restart servers in my testing place, this never happened prior to when Restart Servers was moved to creator hub, and my BindToClose callbacks haven’t changed since then (at least i think so)

Actually I have 4 BindToClose callbacks:

  • The 1st one saves player progress in case it wasn’t saved. This should never take that long
  • The 2nd one writes a crash log to the DataStore in case of a server crash. DeveloperUpdate is an exception, so this shoudn’t delay the restart.
  • The 3rd one is related to Search. This probably didn’t run in the testing place and even if it did all it is is a DataStore UpdateAsync.
  • The 4th one is related to ads. There were no ads running on the test place as far as I know so this should also have no impact.
1 Like

Tried it again, instead of rejoining me I was kicked with this error message:

1 Like

Re-tried with alt account in-game. This time, my main account was kicked instantly with the same error message and my alt account was disconnected a few seconds later:

Overall the restart doesn’t seem to work

1 Like

Place IDs where you saw these happen? Thanks

All of the restarts were done inside my private testing place (18209252868)

I’m worried as I have an update scheduled for Sunday, and if the restart isn’t done properly it could be pretty bad

1 Like

@CcXxiiHuman_C4t Thanks. There’s a known issue where the auto-reconnect doesn’t work on private testing Places that we’re looking into. If you see the issue persist after you publish publicly, please let us know

@royee354 we’re looking into the example you posted

1 Like

@royee354 I looked at logs for one of the hanging servers from your 10:32 AM (Pacific Time) update. As suspected, there is a hanging BindToClose callback. Since it sounds like you’re not expecting BindToClose to be in your experience, you should find where it’s coming from and remove it. If, on the other hand, you do need that callback (but it doesn’t rely on players still being in the game), you can teleport them yourself before doing anything else that’s in the callback. Hope this helps!

@royee354 in case it helps in your search, I can see from some telemetry that you have six BindToClose callbacks being triggered. I’m not able to see which of them is causing the hang

1 Like

I’ve just checked the crash logs and there are a lot of instances where the server is closed with “Unknown” or “RobloxMaintenance” with 1 or 0 players? This is awkward and maybe BindToClose somehow fails to report the correct value, “ServerEmpty”


There are also a few RobloxMaintenance ones:

(yes i did forget to timestamp the logs)

So I can teleport the players in a bindtoclose to the new servers before the server is closed manually? Wouldn’t it have a chance to put them in a closed server

You don’t have to worry about that. The first step of restarting servers is stopping matchmaking to existing servers. Once BindToClose fires any teleports are guaranteed to not go to an outdated server