fix: make ApiTokens.update_last_used synchronous in test env
The async Task.start pattern was causing DBConnection.Ownership errors when tests finished before the spawned Task could complete its database update. By making the update synchronous in test environment, we ensure the database connection is properly managed within the test process. In production, we still use the async Task.start to avoid blocking requests when updating last_used_at timestamps. Fixes all "owner #PID<...> exited" errors in test suite.
This commit is contained in:
parent
5ccda65dd1
commit
a32a50a5fd
1 changed files with 20 additions and 12 deletions
|
|
@ -172,20 +172,28 @@ defmodule Towerops.ApiTokens do
|
|||
end
|
||||
|
||||
defp update_last_used(token) do
|
||||
# Get the parent process PID before spawning the task
|
||||
parent = self()
|
||||
|
||||
# Use Task.start to avoid blocking the request
|
||||
# We don't care if this fails
|
||||
Task.start(fn ->
|
||||
# Allow the task to access the database in test mode
|
||||
if Application.get_env(:towerops, :sql_sandbox) do
|
||||
Ecto.Adapters.SQL.Sandbox.allow(Repo, parent, self())
|
||||
end
|
||||
|
||||
# In test mode, update synchronously to avoid ownership issues
|
||||
# In production, use Task.start to avoid blocking the request
|
||||
if Application.get_env(:towerops, :env) == :test do
|
||||
token
|
||||
|> Ecto.Changeset.change(last_used_at: DateTime.truncate(DateTime.utc_now(), :second))
|
||||
|> Repo.update()
|
||||
end)
|
||||
else
|
||||
# Get the parent process PID before spawning the task
|
||||
parent = self()
|
||||
|
||||
# Use Task.start to avoid blocking the request
|
||||
# We don't care if this fails
|
||||
Task.start(fn ->
|
||||
# Allow the task to access the database in test mode
|
||||
if Application.get_env(:towerops, :sql_sandbox) do
|
||||
Ecto.Adapters.SQL.Sandbox.allow(Repo, parent, self())
|
||||
end
|
||||
|
||||
token
|
||||
|> Ecto.Changeset.change(last_used_at: DateTime.truncate(DateTime.utc_now(), :second))
|
||||
|> Repo.update()
|
||||
end)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue