The past 7 days I’ve actually spent an incredible amount of time on Gamocosm, primarily (re)deploying the production server 3 times! I would learn better ways to set things up throughout/after the process. I tried to do it early in the morning so hopefully no-one experienced any downtime. Previously, Gamocosm was running on the original server created over 5 years ago, and using Phusion Passenger as the internal server for Rails (the Ruby web framework Gamocosm is built on). However, that required specially compiling nginx (the front-facing server), and it wasn’t that nice. Gamocosm now uses Puma as the internal server.

I have also hopefully fixed a couple long-standing bugs:

  • Minecraft not starting after server started (an issue was fixed, although there may still be another problem)
  • Server failing the shutdown, snapshot, and destroy process, creating multiple snapshots and not destroying the server (it would abort if it thought it couldn’t get the snapshot ID)

Both issues were related to delays in information updating on Digital Ocean’s end; for example, the snapshot event/action would report completed, but it would not be visible immediately until shortly after. Gamocosm will now continue to poll for the information/status it needs, instead of easily aborting if Digital Ocean’s API had any delays.

I’ve also added any extra clause to the snapshotting worker to delete any old snapshots once it has the new snapshot. These changes should mean that there will be less litter of snapshots (hopefully no litter).

Going forward, I’m thinking of rewriting the scheduling backend, and possibly adding support for user specified domains. I think I’ll try to resume the weekly updates, so stay tuned!