비공개 채팅 채널에 사람을 자동으로 추가하는 기능이 더 이상 작동하지 않나요?

금요일에 자체 호스팅 Discourse 설치 환경을 업데이트했습니다. 약 2주 정도 업데이트가 밀려 있었습니다. 현재 버전은 3.5.0.beta2-dev ( 712302c020 )입니다.

비공개 카테고리 중 하나를 기반으로 비공개 채팅 채널을 생성했으며, 해당 카테고리에 접근 권한이 있는 7명의 사용자를 자동으로 추가할 것인지 묻는 메시지에 "예"라고 선택했습니다:

하지만 작동하지 않았으며, 추가된 사용자는 저 자신뿐이었습니다:

사용자를 검색하여 추가하려고 해봤지만, 결과가 0건으로 나타났고, 다른 관리자도 추가할 수 없었습니다:

분명히 추가할 수 있는 사용자가 존재합니다:

다시 말하지만, 그룹에 속한 7명의 사용자는 첫 단계에서 추가되었어야 했습니다. Jobs::Chat::AutoJoinUsers 사이드킥(Sidekiq) 작업을 실행해 보기도 했지만, 역시 실패했습니다. 또한 로그에서도 에러를 찾을 수 없습니다.

업그레이드하기 전에 동일한 방식으로 다른 두 채널을 설정해 보았는데, 그때는 이 프로세스가 완벽하게 작동했습니다.

최신 버전으로 한 번 더 업데이트를 시도해 보겠지만, 최근 커밋들은 이 문제와 무관해 보입니다.

수정: 해결됨! 제 실수였습니다. 권한을 업데이트하는 것을 잊었습니다. Automatically adding people to a private chat channel is no longer working? - #12 by cultiv

안타깝게도 3.5.0.beta2-dev ( 558c566ca8 ) 버전으로 업데이트해도 해결되지 않았습니다.

추가할 수 있어야 할 사용자를 검색하면 total_rows가 1개 반환되지만 memberships 배열이 비어 있는 것을 확인할 수 있습니다:

반면 제 이름을 검색하면 total_rows도 1이고 제 계정이 반환됩니다:

이 문제를 일으킨 원인이 제가 업그레이드를 하기 전에 추가된 이 PR 때문일까요?

이 PR 이전 커밋으로 어떻게 다운그레이드할 수 있을지 모르겠네요. 그렇게 하면 이 PR이 문제의 원인인지 테스트해 볼 수 있을 텐데 :thinking:

참고로, 제 포럼의 Dev 버전(별도 인스턴스)과 Live 버전 모두에서 동일한 문제가 발생하고 있습니다. 두 버전 모두 위의 PR 이후로 업그레이드되었습니다.

즉시 답변을 드리기 어렵지만, 이 문제를 살펴보겠습니다. 감사합니다.

저는 3.5.0.beta1로 다운그레이드하고 브라우저 캐시 등을 모두 새로고침했습니다. 하지만 여전히 이 문제를 겪고 있습니다.

정말 기이한 일입니다. 2주 이내의 비교적 최신 버전에서 사용했고, 그곳에서는 정상적으로 작동했습니다. 2개의 채널을 자동 추가 설정으로 만들었고, 기존 그룹의 사람들을 추가하라는 질문에 "예"라고 답했을 때 모든 과정이 완벽하게 진행되었습니다.

이제 다시 시도해 보니 1개 채널을 제외하고는 제대로 작동하지 않습니다. 예를 들어 설명하자면:

이 모든 채널에는 6명 이상의 멤버가 있어야 합니다. 멤버가 1명뿐인 경우, 그 사람은 저 자신입니다. 거기에 있는 “Diversity equity and inclusion team” 채널은 그룹의 모든 멤버를 일관되게 추가하는 유일한 채널입니다.

제 라이브 사이트의 “Packages team” 채널은 생성했을 때 완벽하게 작동했으며, 10명 모두가 추가되었습니다. 개발 사이트에서도 이전에 정상적으로 작동했습니다. 그런데 이제 개발 사이트에서 해당 채널을 삭제했다가 다시 추가하면, 항상 멤버 3명만 추가됩니다.

그룹들을 비교해 보니 모든 그룹 설정이 정확히 동일했습니다. 그룹에서 사람들을 삭제했다가 다시 추가해 보았지만, 차이가 없었습니다.

마지막으로, 이전에 해당 그룹에 속해 본적이 없는 사용자를 그룹에 추가하면 채팅 채널에 추가되는 것처럼 보입니다. 하지만 기존 멤버를 삭제했다가 다시 추가하면 그런 현상이 일어나지 않습니다.

채팅 채널을 삭제하고, 그룹에서 사람들을 제거한 뒤, 채팅 채널을 다시 추가하고 기존 사용자들을 그룹에 다시 추가해 보았습니다. 그래도 작동하지 않았습니다. 무작위로 다른 사용자를 하나 추가하면.. 작동은 합니다.

제 인스턴스에 뭔가 완전히 문제가 생긴 것 같습니다.. 새 인스턴스에서 테스트할 기회는 없습니다.

개발 사이트의 SSH 접근 권한과 관리자 권한을 제공해도 좋습니다. 개발 사이트이므로 아무거나 엉망이 되어도 괜찮습니다 :sweat_smile: :joy:

수정: 몇 시간 전의 최신 커밋으로 업그레이드했습니다. 기존 비공개 카테고리에 완전히 새로운 그룹(동일한 사람들이 포함된)을 추가해 보았지만, 결과는 동일하여 아무도 채팅 채널에 추가되지 않았습니다.

채널을 만든 이후에 다른 사용자 중 누군가 이 Discourse에서 활동한 적이 있나요? 아니면 로그아웃을 한 뒤 다시 로그인한 적이 있나요?

방금 이 문제를 재현해 보았는데, 채널 생성 직후에는 실제로 멤버가 한 명만 표시되고 있었습니다. 카테고리 접근 권한이 있는 다른 각 사용자로 로그인할 때마다 멤버 수가 늘어났습니다. 해당 사용자들은 전체 채널 히스토리를 볼 수 있었으므로, 이는 로그인 시점부터 시작된 것이 아닙니다.

따라서 이는 UX/UI 버그로 보입니다. 멤버 목록에 접근 권한이 있는 사용자가 즉시 표시되면 훨씬 혼란이 줄어들 것입니다!

확인해 주셔서 감사합니다! 대부분의 사용자가 최근에 온라인 상태였고, 몇몇을 위장해서 시도해 보았지만 여전히 해당 카테고리 채팅 채널에 추가되지 않습니다.

채팅 채널에 이미 있는 사용자는 추가할 수 없다는 점은 이해가 갑니다. 하지만 불행히도 그들은 채널을 볼 수도 없고, 해당 채널의 직접 URL로 이동할 수도 없습니다.

참고로 카테고리를 다음과 같이 설정해 두었습니다:

  • 커뮤니티 팀
    • 핵심 협업자 팀
    • 패키지 팀

등등. 모든 그룹은 최상위 카테고리에 액세스 권한이 있고, 각 개별 그룹은 자신만의 하위 카테고리에 액세스 권한이 있습니다. 일부 팀에서는 작동하므로 이것이 문제가 될 것 같지는 않습니다.

데이터베이스에서 일부 사용자를 수동으로 추가하는 것도 시도해 보았지만(INSERT INTO user_chat_channel_memberships.. ) 올바른 테이블을 업데이트하지 않는 것 같거나, 다른 이유로 작동하지 않는 것 같습니다. 어쨌든 이 문제는 해결되지 않고 있습니다 :sweat_smile:

문제를 찾았어요. 범인은 바로 저였어요.. :person_facepalming:

다시 처음부터 끝까지 확인해 보니, "채팅 허용 그룹"에 모든 그룹이 추가되어 있지 않다는 걸 당연히 알아차렸죠. 저희 사이트는 채팅을 할 수 있는 사람을 엄격하게 관리하는데, 제가 특정 "채팅 허용 그룹"만 설정해 놓은 걸 잊고 있었어요 :see_no_evil_monkey:

문제가 해결되었고 피드백 감사합니다!