From e2c94dda6cf20e400c04e0fb5f8ea826d1d2b9f2 Mon Sep 17 00:00:00 2001 From: "byte[]" Date: Mon, 10 Apr 2023 22:16:10 -0400 Subject: [PATCH] Lock the topic while computing topic_position --- lib/philomena/posts.ex | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/philomena/posts.ex b/lib/philomena/posts.ex index 6bef4d1b..cefde12c 100644 --- a/lib/philomena/posts.ex +++ b/lib/philomena/posts.ex @@ -57,11 +57,16 @@ defmodule Philomena.Posts do Topic |> where(id: ^topic.id) + topic_lock_query = + topic_query + |> lock("FOR UPDATE") + forum_query = Forum |> where(id: ^topic.forum_id) Multi.new() + |> Multi.all(:topic_lock, topic_lock_query) |> Multi.run(:post, fn repo, _ -> last_position = Post