API(gem)를 통해 토픽을 잠금 처리하고 있습니다. 잠금 해제 명령만 단독으로 실행하는 경우 잠금 및 해제가 정상적으로 작동하지만, 토픽에 게시글을 먼저 작성한 후 다음 명령으로 잠금 처리를 시도하면 게시글이 작성되고 토픽이 잠기긴 하지만, 그 직후 즉시 잠금이 해제됩니다!
이것은 정말 이상합니다. 게시글 작성만 하거나, 토픽 잠금만 단독으로 실행하면 정상적으로 작동합니다. 하지만 두 가지를 동시에 시도하면, 마지막에 토픽이 알아서 잠금 해제됩니다!
현재로서는 토픽을 잠금 처리하지 않기로 결정했지만, 조사할 가치가 있는 문제일 수도 있으므로 여기에 공유해 봅니다.
좋은 지적입니다. 시간이 되면 이 문제를 조사해 보겠습니다. 이 두 API 호출을 하나의 요청으로 결합하는 방식은 UI에서 사용되는 방식과 정확히 일치하지 않습니다(잠긴 상태의 새 주제를 생성할 수 없으므로). 따라서 해당 API 엔드포인트는 locked 플래그를 확인하지 않거나, 주제 생성 시 기본값으로 unlocked로 설정하는 것으로 보입니다.
오늘 이 문제를 잠깐 살펴보고 간단히 수정할 수 있을지 확인해 보았지만, 토픽에 적용할 수 있는 많은 작업들은 토픽이 생성된 후에 수행하는 것이 가장 좋습니다. 그 이유 중 하나는 토픽을 닫을 때 데이터베이스를 직접 업데이트하는 대신 TopicStatusUpdater를 사용해야 하기 때문입니다. 그러나 토픽 생성 중에 상태를 업데이트하면 첫 번째 게시물이 생성되기 전에 토픽이 닫히게 되어 다음과 같은 이상한 동작이 발생합니다:
방금 로컬에서 코드를 테스트해 봤는데, 제 환경에서는 정상적으로 작동합니다. 어떤 부분이 작동하지 않는 건가요? 게시글은 생성되고 있지만, 토픽만 닫히지 않는다고 추정해 봅니다. 그렇다면 puts를 사용해 @client.change_topic_status(slug, topic_id, params)의 결과를 출력해 주시겠습니까?
참고로 API gem의 코드를 살펴봤는데, slug 변수를 전혀 사용하지 않고 있습니다. 따라서 해당 변수를 제거하도록 업데이트하겠습니다.