안녕하세요. 몇 번의 Discourse 업데이트 전부터 문제가 발생했는데, 새로운 사용자가 승인을 기다리고 있다는 알림을 받으면 검토 대기열을 확인해 보았을 때 대기열이 비어 있는 경우가 있습니다.
이 문제는 단 하나의 사용자만 승인을 요청할 때만 발생합니다. 여러 사람이 대기 중이면 대기열에서 한 명을 제외한 모든 사용자를 볼 수 있지만, 항상 한 명은 포함되지 않습니다.
즉, 많은 사용자가 가입하지 못하고 있는 상황입니다.
별도의 스레드에서는 다중 선택(multi-select) 플러그인이 어떻게든 관련되어 대기열 길이에 1을 더하는 원인이 될 수 있다는 제안이 있었습니다.
하지만 전체적으로 볼 때 이는 가능성이 낮아 보입니다. 왜냐하면 어떤 날에는 알림이 트리거되고 어떤 날에는 그렇지 않기 때문에, 무언가가 일어나고 있어야 하기 때문입니다. 또한 이 문제는 플러그인이 설치된 시점에 시작된 것이 아니라 몇 달 후에 시작되었고, 그 시점은 Discourse 업데이트와만 연관 지을 수 있습니다(그 이후로 다른 플러그인이나 변경 사항이 없었기 때문이죠).
혹시 다른 분들도 이런 문제를 경험해 보셨나요? 그리고 해결책은 무엇일까요?
혹시 @jjaffeux 님, 이 플러그인에 적용하신 “FIX: makes value parsing more resilient” 수정 사항이 이 문제와 관련이 있을 수 있을까요?
좋아요, 흥미로웠습니다. 위에서 언급한 대로 제 Gmail 계정을 사용해 보았는데, 다른 브라우저 창에서 Gmail 웹페이지로 이동하여 Discourse에서 생성된 인증 이메일이 도착하기를 기다리는 동안에도, 새로운 가입자가 검토 대기 중이라는 알림이 제 일반 관리자 이메일 주소로 전송되었습니다. (그리고 대기열은 이전처럼 비어 있었습니다.)
제 Gmail 주소를 잘못 입력했기 때문에 Gmail 계정으로 인증 이메일을 받지 못했고, 따라서 인증을 완료하지 못했습니다.
따라서 이것이 우연이 아니라면, 관리자 알림이 너무 앞서 나가는 것일까요? 하지만 그렇다면 왜 모든 알림에서 정확히 한 명만이 대기열에서 누락되는지 설명할 수 없습니다. 아마도 한 지원자의 이메일 인증 실패와 나머지 지원자의 성공이 항상 반복되지는 않을 것이기 때문입니다.
** 수정
이후, 해당 인코그니토 가입 창에서 제 Gmail 주소를 수정하고 인증 이메일을 다시 전송했습니다. 그제서야 Gmail 브라우저 창에 이메일이 도착했습니다. 다른 인코그니토 창에서 인증 URL을 사용하여 인증에 성공적으로 완료했습니다. 이후 관리자 이메일 주소로 추가 알림이 전송되지 않았으므로, 첫 번째 알림이 실제로 이 새로운 가입 시도와 관련이 있었음을 추측할 수밖에 없습니다.
또 다른 브라우저 창을 사용하여 안전 모드에서 사이트에 다시 접속하고 관리자로 로그인한 결과, 여전히 한 명이 검토 대기 중인 동일한 대기열을 확인했습니다. 하지만 이번에는 제 새로운 테스트 계정이 표시되어 승인할 수 있었습니다.
추가로 말씀드리자면, 인코그니토 창을 통해 새로운 가짜 계정을 생성하여 다시 시도해 보았습니다(이번에는 처음부터 정확한 주소를 입력했습니다). 이 시도는 예상대로 정상적으로 작동했고, 일반 브라우저 창에서 이메일로 받은 관리자 알림에 응답했을 때 대기열에 새 사용자가 표시되는 것을 확인했습니다.
이어서 일반 창을 통해 새로운 가입을 진행했고, 알림에도 일반 창으로 응답했습니다(인코그니토 모드나 안전 모드를 전혀 사용하지 않았습니다). 이번에도 모든 것이 정상적으로 작동했습니다. 따라서 해당 문제(또는 두 가지 문제—지원자의 이메일 주소 확인 전에 관리자에게 알림이 전송되는 것과, 미완성 또는 완료된 신청서가 대기열에 표시되지 않는 것)는 첫 번째 시도에서만 발생했던 것으로 보입니다.
다시 한번 말씀드리지만, 이것이 문제를 명확히 하는 데 큰 도움이 될지는 잘 모르겠습니다. 하지만 시스템에 의해 첫 번째 가입이 실패(유령 알림 생성)한 이후, 이후의 가입들은 정상적으로 작동하는 것은 아닐까요? 혹은 가입 활동이 더 이상 없으면 충분한 시간이 지난 후 다시 실패 모드로 복귀하는 것일 수도 있습니다.
다만 현재 제 디스코urs 설치 환경에서도 대기 중인 사용자가 없다고 표시됩니다.
방금 가짜 계정을 하나 더 생성하고 이메일 인증을 완료했는데, 아직 관리자 이메일 계정으로 어떤 알림도 전송되지 않았습니다. 다시 관리자로 사이트에 로그인하여 쿼리를 재실행했는데 카운트는 여전히 0이었지만, 이번에는 디스코urs가(정확하게) 검토 대기 중인 사용자가 1명 있다고 보고했습니다.
보통 검토 대기 사용자는 관리자 주소로 즉시 알림 이메일이 도착하는데, 이번에는 절대 전송되지 않은 것으로 확신합니다. 이제 거의 반대되는 문제가 발생했네요!
*수정 - 방금 검토 대기 중인 사용자가 2명이라는 알림을 받았습니다(비정상적인 지연 후). 여전히 햄버거 메뉴 옆의 작은 빨간 아이콘에는 숫자 '1’이 표시되어 있었고, 클릭하여 대기열을 검토해 보니 위에서 생성한 제 가짜 사용자 1명만 표시되었습니다. 이를 승인했고, 디스코urs는 더 이상 검토할 사용자가 없다고 표시했습니다.
죄송합니다. WHERE 절이 잘못되었음을 확인했습니다. User 대신 r.type = 'ReviewableUser'여야 합니다.
대신 이 쿼리를 실행해 주시겠어요?
SELECT COUNT(*)
FROM users
INNER JOIN reviewables r ON r.target_id = users.id
WHERE r.type = 'ReviewableUser' AND r.status = 1 AND users.approved = FALSE