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:
Moritz 2026-03-04 17:08:32 +01:00
parent ea350ab315
commit 1ce9915c7d
Signed by: moritz
GPG key ID: 1020A035E5DD0824
2 changed files with 27 additions and 8 deletions

View file

@ -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])