그룹에서 사용자가 삭제된 후에도 사용자 플레어가 유지됩니다

사용자를 그룹에서 제거하면, 해당 그룹의 플레어가 즉시 사용자 아바타에서 사라질 것으로 기대해도 될까요?

방금 사용자를 그룹에서 제거했습니다.
해당 사용자는 기본 그룹이 선택되어 있지 않습니다.
image

설정에서 플레어가 선택되어 있지 않습니다.

브라우저를 새로고침하고 로그아웃했다가 다시 로그인했습니다.

플레어가 제거되기 전에 사용자가 로그아웃하고 다시 로그인해야 하는 건가요? 제가 놓치고 있는 단계가 있는 건가요?

6개의 좋아요

대부분의 작업은 forum.example.com/sidekiq/scheduler에서 확인할 수 있습니다. 예를 들어 배지 쿼리를 변경했다면 BadgeGrant 작업이 실행되도록 하루 정도 기다릴 수도 있고, 수동으로 트리거 버튼을 눌러 진행을 앞당길 수도 있습니다. 하지만 어떤 작업이 플레어를 업데이트하는지는 정확히 알지 못합니다.

1개의 좋아요

네, 익명 사용자의 경우 일부 페이지에서 1분 동안 이전 플레어가 표시되는 아주 작은 예외가 있습니다.

조사하여 수정하겠습니다.

3개의 좋아요

주요 그룹이 플레어가 연결된 새로운 주요 그룹으로 변경되어도 사용자 플레어는 유지됩니다.

1개의 좋아요

이 문제는 이제 수정되었습니다.

단일 그룹 페이지에서 대량 작업 "모두 주요로 설정"을 사용하여 주요 그룹을 변경한 건가요?

4개의 좋아요

아니요, 사용자 관리 페이지에서 단일 사용자의 기본 그룹을 변경했습니다.

1개의 좋아요

2.8.0.beta4(Commits · discourse/discourse · GitHub)에서도 여전히 문제가 발생하고 있음을 알려드립니다.

이 버그를 수정하기 위한 변경 사항이 없으므로 아직 최신 커밋으로 업데이트하지 않았습니다.
우리의 경우, Discourse Connect SSO를 통해 그룹을 업데이트할 때 사용자 플레어(Flair)가 변경되지 않습니다. 사용자는 해당 그룹에 존재하지 않음에도 불구하고 플레어는 그대로 남아 있습니다.

버그를 식별하고 수정하는 데 도움이 되길 바랍니다.

이 수정은 소급 적용되지 않습니다. 기존 사용자의 플레어를 수동으로 업데이트해야 합니다. 영향을 받는 사용자가 몇 명인지 알려 주시겠어요?

와. 아, 저는 추산치에 대해 잘 모르겠어요. 데이터 흐름을 보면, 매일 SSO를 통해 특정 그룹에 가입하거나 탈퇴하는 사용자가 수십 명에서 수백 명에 달할 수 있습니다.
그럼에도 불구하고, 저는 그룹과 연결되지 않은(구식인) 플레어가 있는 사용자를 집계할 수 있을까요?

그런데 다른 사용자의 플레어를 어떻게 수정하나요? 관리 패널에서 그런 옵션을 찾을 수 없었습니다. 이 버그의 잔재를 제거하려고 모든 사용자를 한 명씩 업데이트할 의사는 없는데요.

참고로, 그룹 설정에서 플레어를 제거하고 다른 플레어 이미지를 업로드해도 해결되지 않습니다. 이 그룹에 속하지 않는 사용자들은 여전히 그룹 플레어가 유지되고 있습니다 :frowning:

이 문제에 대해 어떻게 해야 할지 아는 분이 계신지 확인하려고 합니다


이 게시물을 이렇게 여러 번 올린 점 죄송합니다. 이 버그가 정말로 우리 커뮤니티를 혼란스럽게 하고 있어요 :frowning:
@vinothkannans 이 버그의 영향에 대해 어떻게 진행하면 좋을지 조언을 주실 수 있을까요?

User.where(flair_group_id: REPLACE_WITH_GROUP_ID).where.not(primary_group_id: REPLACE_WITH_GROUP_ID).update_all(flair_group_id: nil)

위 명령어로 문제를 해결할 수 있습니다. rails console에서 이 명령어를 실행하세요. 실행하기 전에 반드시 백업을 해두시기 바랍니다.

답장 주셔서 감사합니다.

제가 이해한 것이 맞는지 확인하고 싶습니다. 이 버그의 영향으로 인해, 이러한 쿼리를 매일 또는 다른 주기로 실행해야 한다는 것이 맞나요? 사실, 저희 사용자 그룹은 매일 업데이트되며, 메인 웹사이트에서 사용자의 구독 상태가 변경될 때마다 업데이트됩니다. 모든 작업은 SSO를 통해 수행됩니다.

아니요, 이를 정기적으로 실행할 필요는 없습니다. 현재 해당 문제는 위의 커밋에서 수정되었습니다. 이 명령어를 사용하면 이전에 영향을 받은 사용자의 플레어가 수정됩니다.

내일 대안을 확인해 보겠습니다.

1개의 좋아요

감사합니다. 레일즈 쿼리를 시도하기 전에 조사 결과를 기다리겠습니다.
이 문제에 대해 제가 도움이 될 수 있는 부분이 있다면 알려주세요.

@kinetiksoft 아래 Rails 코드는 모든 그룹의 모든 멤버에 대해 문제를 해결해야 합니다. 더 이상 해당 플레어 그룹에 속하지 않는 사용자의 그룹 플레어를 제거합니다.

참고로, 이 스크립트를 정기적으로 실행할 필요는 없습니다. 이전의 영향을 받은 사용자들을 위한 일회성 수정입니다. 실행 전에 예방 차원으로 백업을 꼭 받아두세요.

User.joins("LEFT OUTER JOIN group_users ON group_users.user_id = users.id AND group_users.group_id = users.flair_group_id").where(group_users: { id: nil }).where.not(flair_group_id: nil).update_all(flair_group_id: nil)

안녕하세요 @vinothkannans,

감사합니다! 쿼리를 실행한 후 결과를 알려드리고, 향후 며칠 동안 업데이트를 제공하여 그 후 플레어와 그룹 간 관계에 불일치가 없는지 확인하겠습니다.

1개의 좋아요

또한, 위 커밋에 다른 수정 사항도 push했습니다. 머지된 후에는 사이트를 업그레이드해 주세요.

1개의 좋아요

좋아요, 알겠습니다. 업그레이드 섹션의 예정된 커밋을 확인해 보겠습니다.
위에서 언급한 SQL 쿼리는 커밋이 우리의 discourse 인스턴스에 병합될 때까지 기다려야 하나요, 아니면 병합을 기다리지 않고 바로 진행해도 될까요?

업그레이드 후에 해당 명령을 실행할 수 있습니다.

2개의 좋아요