From b598df498e507c9655d5aa304ee9b0c26ed41bb9 Mon Sep 17 00:00:00 2001 From: Jay Hayes Date: Thu, 10 Feb 2022 07:57:49 -0600 Subject: [PATCH] Manually manage process rather than relying on linking This prevents the race condition that was causing issues between koans as each is run in its own process. --- lib/koans/18_genservers.ex | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/koans/18_genservers.ex b/lib/koans/18_genservers.ex index f864e0a..ab6d7dc 100644 --- a/lib/koans/18_genservers.ex +++ b/lib/koans/18_genservers.ex @@ -12,9 +12,13 @@ defmodule GenServers do {:ok, args} end - def start_link(init_password) do + def start(init_password) do # The __MODULE__ macro returns the current module name as an atom - GenServer.start_link(__MODULE__, init_password, name: __MODULE__) + GenServer.start(__MODULE__, init_password, name: __MODULE__) + end + + def stop do + GenServer.stop(__MODULE__) end def unlock(password) do @@ -151,5 +155,7 @@ defmodule GenServers do {_, response} = Laptop.owner_name() assert response == ___ + + :ok = Laptop.stop() end end