Member/CycleGenerator: better delete_cycles errors; UUID-based advisory lock
delete_cycles returns first error for debugging. Advisory lock key derived from member id (first 8 bytes of UUID hex) to reduce phash2 collision risk; fallback to phash2 on invalid UUID.
This commit is contained in:
parent
ea350ab315
commit
1ce9915c7d
2 changed files with 27 additions and 8 deletions
|
|
@ -112,7 +112,7 @@ defmodule Mv.MembershipFees.CycleGenerator do
|
|||
end
|
||||
|
||||
defp do_generate_cycles_with_lock(member, today, false, opts) do
|
||||
lock_key = :erlang.phash2(member.id)
|
||||
lock_key = Member.advisory_lock_key_for_member_id(member.id)
|
||||
|
||||
Repo.transaction(fn ->
|
||||
EctoSQL.query!(Repo, "SELECT pg_advisory_xact_lock($1)", [lock_key])
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue