towerops/lib
Graham McIntire ace3f1f661
Fix database connection ownership issues in async Tasks
Changes:
- ApiTokens.update_last_used/1: Allow Task to access sandbox in tests
- DeviceMonitor.enqueue_check/1: Allow Task to access sandbox in tests
- PollerWorker.enqueue_poll/1: Allow Task to access sandbox in tests

Problem:
When tests spawn async Tasks that access the database, those Tasks
don't have ownership of the database connection in Sandbox mode,
causing DBConnection.ConnectionError warnings.

Solution:
Before accessing the database in a Task, check if we're in test mode
and call Ecto.Adapters.SQL.Sandbox.allow/3 to transfer connection
ownership from the parent process to the Task.

Pattern used:
```elixir
parent = self()
Task.start(fn ->
  if Application.get_env(:towerops, :sql_sandbox) do
    Ecto.Adapters.SQL.Sandbox.allow(Repo, parent, self())
  end
  # ... database operations ...
end)
```

All 1041 tests passing. Some harmless disconnection warnings remain
when Tasks complete after tests finish, but these don't affect results.
2026-01-20 12:39:25 -06:00
..
mix/tasks Include MIB files in Docker image instead of using PVC 2026-01-19 14:01:03 -06:00
towerops Fix database connection ownership issues in async Tasks 2026-01-20 12:39:25 -06:00
towerops_web updated agent code 2026-01-19 14:10:54 -06:00
towerops.ex init 2025-12-21 11:10:43 -06:00
towerops_web.ex separate out marketing layouts 2026-01-06 14:46:39 -06:00