동작을 확인하여 알림이 재생성됩니다

음, 이건 좀 이상한 사례인데, 오래된 버전에서 겪은 문제라 누군가 힌트나 비슷한 경험을 공유해 주시면 좋겠습니다.

우리는 2.4.5 버전을 사용 중인데(특수한 플러그인 의존성 때문), 사용자들이 중복된 알림을 받고 있다는 불만이 있습니다. 어떤 경우엔 이벤트 발생 후 며칠이 지나서, 그리고 사용자가 해당 알림을 이미 여러 번 확인(클릭)한 뒤에도 알림이 다시 생성됩니다. 이 현상은 Discourse UI에서 발생하며(앱이나 브라우저가 아닙니다).

해당 토픽의 게시물:

 post_number |         created_at         
-------------+----------------------------
           1 | 2020-06-22 17:06:42.531868
           2 | 2020-06-23 00:11:07.159579
           3 | 2020-06-24 00:35:06.000641
           4 | 2020-06-25 00:17:16.998622
           5 | 2020-06-29 00:00:39.712988
           6 | 2020-06-29 01:03:20.137653
           7 | 2020-06-29 01:32:45.604947

해당 사용자의 이 토픽 관련 알림:

   id    | notification_type | user_id |         created_at         | topic_id | post_number 
---------+-------------------+---------+----------------------------+----------+-------------
 1125345 |                 5 |     956 | 2020-06-24 21:45:21.521173 |    39247 |           3
 1133280 |                 5 |     956 | 2020-06-29 01:27:32.242212 |    39247 |           6
 1140349 |                 2 |     956 | 2020-07-02 21:11:44.843782 |    39247 |           7

보시다시피, 7번 게시물에 대한 답글 알림이 답글 작성 후 3.5일이 지난 후에 생성되었습니다.

21:11:44에 무슨 일이 있었는지 알아보기 위해 액세스 로그를 grep으로 검색해 보니, 해당 사용자가 정확히 그 시각에 프로필 - 활동 - 답글(/user_actions.json?username=redacted&filter=5&offset=240)을 보고 있었습니다.

거의 해당 답글을 훑어보는 것만으로 알림이 재생성된 것처럼 보입니다.

관련된 플러그인은 onesignal과 push-notifications입니다.

혹시 아무런 아이디어라도 있을까요?

수정: 하루 뒤 7번 게시물의 알림이 다시 재생성되었습니다:

   id    | notification_type | user_id |         created_at         | topic_id | post_number 
---------+-------------------+---------+----------------------------+----------+-------------
 1125345 |                 5 |     956 | 2020-06-24 21:45:21.521173 |    39247 |           3
 1133280 |                 5 |     956 | 2020-06-29 01:27:32.242212 |    39247 |           6
 1141684 |                 2 |     956 | 2020-07-04 02:23:12.188685 |    39247 |           7

이건 우리가 언젠가 수정한 버그와 비슷하게 들리는데? 잘 모르겠다.

음, 관련 플러그인은 onesignal, push-notifications 그리고 follow입니다.

@outofthebox 이 문제는 이와 관련이 있다고 생각합니다.

알림을 반복적으로 받는 사용자(사용자 #956)에게 알림을 생성하는 게시글(사용자 #15356)을 작성한 사용자는 다음과 같은 상태입니다:

  • 알림을 받는 사용자를 팔로우하고 있습니다.
  • 존재하지 않는 사용자(사용자 #16229)에게 팔로우되어 있습니다.

:

 select user_id, name, value from user_custom_fields where user_id=15356;
 user_id |     name     |         value          
---------+--------------+------------------------
   15356 | followers    | 16229 --> 이 사용자는 존재하지 않습니다
   15356 | following    | 56,0
   15356 | following    | 956,0 --> 알림을 받는 사용자

그러면 이번에도 팔로우 플러그인 버그의 또 다른 사례인가요?

아직 확실하지 않아요. 약간 다른 것 같기도 하지만, 반대로 공통점도 꽤 많아요.