Cleaning Up After a Game

Learn what to do when game is over.

We'll cover the following

Cleaning up the tables

We’re saving the state of each game in the :game_state table, but so far, we haven’t removed that state when the game is over. The :game_state table continues to grow and use memory unless we delete a game’s key from the :game_state table when the supervisor terminates the child process or when the child process times out.

To clean that data up when a game ends normally, we add a call to :ets.delete/2 in the GameSupervisor.stop_game/1 function:

def stop_game(name) do
  :ets.delete(:game_state, name)
  Supervisor.terminate_child(__MODULE__, pid_from_name(name))

Get hands-on with 1200+ tech skills courses.