Implementing Repeatable Read Isolation in Ecto

116
clicks
Implementing Repeatable Read Isolation in Ecto
The article addresses the issue of database race conditions, specifically 'Lost Updates' in Postgres, which operates with weak isolation by default. To address such conditions, setting the transaction's isolation level to 'repeatable read' in Ecto is necessary. The process of reaching this solution is detailed through a test harness, using Elixir's Ecto and processes to demonstrate transaction interleavings. Eventually, Chris describes the simplicity of the fix, which merely requires setting the isolation level within the transaction block. While acknowledging that the efforts to discover a one-liner change may seem excessive, the author highlights the importance of understanding your tools deeply and processes for testing concurrency issues. All test codes are open-sourced on GitHub.

© HashMerge 2024