Notificações voltando mesmo após lê-las [plugin Private Topics]

Olá, estou usando a versão 3.2.0.beta4-dev (auto-hospedada) e neste commit. Após as atualizações, os usuários começaram a experimentar notificações duplas/triplas na interface do usuário. (Estou falando da interface do Discourse, não de e-mails, etc.)

Mesmo depois de clicar e ler, as notificações às vezes retornam. Estou tendo esses problemas também. Não sei como solucionar isso ou fornecer logs úteis. Queria compartilhar isso, talvez se for um problema global ou na minha instância?

Suspeito que seja um problema de RAM, quanta RAM sua instância do Discourse tem?

Presumo que você queira dizer ‘Interface do Discourse’?

Ok, mas este servidor está ativo há quase 2 meses, este problema não apareceu antes. Atualmente, em meu servidor, temos 4 GB de RAM e metade dela está vazia. 2 GB de swap também estão vazios.

Estou pensando que talvez a atualização tenha feito isso, mas talvez as extensões tenham feito isso. Não tenho certeza. Acho que o próximo passo que darei será desativar todas as extensões e ver se isso ajuda.

Sim, incluí uma imagem na minha primeira postagem. Quero dizer notificações do Discourse UI.

Desabilitei várias extensões e o problema persiste. Alguma ideia ou é possível fazer o downgrade para a versão 3.2.0.beta3-dev? Obrigado.

Olá novamente, sei que ninguém é obrigado a ajudar e que este é um fórum da comunidade e, claro, não sou um cliente pagante, mas este bug está a tornar-se realmente frustrante tanto para mim como para os utilizadores. Criámos uma comunidade há 2 meses graças ao Discourse, onde temos 458 utilizadores ativos mensais. Mas desde que este bug nos aconteceu (há 20 dias), tentei tudo o que pude. É bastante mau para a experiência do utilizador e agora estou a tentar encontrar scripts para migrar para o Flarum ou alguma outra plataforma de fórum. Basta olhar para isto:

output

Os utilizadores recebem a mesma notificação repetidamente. Recebem notificações de 20 dias atrás, 5 dias atrás ou de qualquer outra altura. Mesmo quando descarta todas as notificações, receberá a mesma notificação novamente após algumas horas e não há como resolver isto!

Novamente, sei qual é a minha posição, esta é uma plataforma comunitária. Não tenho o direito de reclamar, mas se ninguém ajudar após esta publicação, mesmo que isso signifique que todas as nossas publicações e tópicos anteriores serão eliminados (1,2 mil tópicos e 12,7 mil publicações), teremos de ir para outro lugar…

Apenas como nota, eu era um defensor do Discourse. Criei vídeos sobre ele no meu canal do YouTube. As comunidades turcas geralmente usam fóruns desatualizados e tive uma ótima experiência usando o Discourse antes, então, depois de abrir o meu próprio fórum, queria que as pessoas conhecessem este software.

De qualquer forma, realmente não quero perder todas as soluções e o trabalho de outras pessoas no nosso fórum atual. Por isso, peço gentilmente a sua ajuda novamente. Obrigado.

Só por curiosidade, você consegue encontrar algo em comum entre as postagens que têm notificações repetidas?

Pelo que entendi, é diferente para cada usuário. Mas elas se repetem. Na minha conta, recebo as mesmas notificações repetidamente. Embora isso não aconteça em posts com mais de 21 dias atrás, nos quais fizemos uma atualização 3.2.0beta4 e também adicionei extensões ao nosso fórum.

Inicialmente, pensei que as extensões tivessem causado isso, então desativei todas as extensões, mas isso não resolveu o problema. Em tempo, talvez eu devesse excluí-las e reconstruir completamente? Não sei.

Então pensei que fosse por causa da beta4. Então fiz o downgrade para a beta3, onde não tínhamos o problema, mas ele ainda persistia.

Infelizmente, não tivemos outros relatos disso, então é difícil identificar o que está acontecendo em seu site. Você tem uma instalação padrão?

Há algo em sua página /logs ou /sidekiq que possa fornecer mais informações?

Sim. Desativar pode não remover completamente a peça problemática. Mas quais plugins você instalou recentemente? Podemos tentar descobrir se algum deles teve problemas relatados.

Sim, entendo que é difícil identificar exatamente o problema. Por isso, eu esperava que isso desaparecesse com o tempo, mas não aconteceu.

Acho que estou tendo o mesmo problema que este: Users getting notifictations from long ago

Sim, tenho uma instalação padrão, mas a única diferença é que estou atrás do Cloudflare. Você pode pensar que isso é culpa do Cloudflare, mas antes não tínhamos esse problema. Não acho que seja provável.

Não consegui encontrar nada relacionado a notificações, mas como não sou especialista nisso, deixe-me compartilhar um trecho rápido; talvez seus olhos notem algo.

Avisos:


MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) não foi encontrado: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
Falha ao enviar notificação push: WebPush::Unauthorized : host: fcm.googleapis.com, #<Net::HTTPForbidden 403 Forbidden readbody=true> corpo: as credenciais VAPID no cabeçalho de autorização não co
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
Falha ao lidar com exceção no middleware de app de exceção: ArgumentError : Lista vazia de atributos passada
Falha ao lidar com exceção no middleware de app de exceção: ArgumentError : Lista vazia de atributos passada
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
O tema/componente DiscoTOC está gerando erros: TypeError: Cannot read properties of null (reading 'en')
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
Falha ao lidar com exceção no middleware de app de exceção: ArgumentError : Lista vazia de atributos passada
Falha ao enviar notificação push: WebPush::Unauthorized : host: updates.push.services.mozilla.com, #<Net::HTTPUnauthorized 401 Unauthorized readbody=true> corpo: {"code":401,"errno":109,"error":"Unaut
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
Falha ao lidar com exceção no middleware de app de exceção: ActiveRecord::RecordNotUnique : PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "index_topic_tags_on_topic_id_and_t
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
Falha ao processar resposta sequestrada corretamente: EOFError : fim de arquivo atingido
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
Aviso de depreciação: `SiteSetting.anonymous_posting_min_trust_level` foi descontinuado. Por favor, use `SiteSetting.anonymous_posting_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/disc
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) não foi encontrado: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) não foi encontrado: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
Falha ao enviar notificação push: WebPush::ResponseError : host: web.push.apple.com, #<Net::HTTPBadRequest 400 Bad Request readbody=true> corpo: {"reason":"VapidPkHashMismatch"}
o tema/componente discourse-gifs está gerando erros: TypeError: Cannot read properties of null (reading 'en')
o tema/componente DiscoTOC está gerando erros: TypeError: Cannot read properties of null (reading 'en')
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) não foi encontrado: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) não foi encontrado: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) não foi encontrado: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) não foi encontrado: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
Falha ao enviar notificação push: WebPush::Unauthorized : host: updates.push.services.mozilla.com, #<Net::HTTPUnauthorized 401 Unauthorized readbody=true> corpo: {"code":401,"errno":109,"error":"Unaut
O Sidekiq está consumindo muita memória (usando: 558.27M) para 'btt.community', reiniciando
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) não foi encontrado: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) não foi encontrado: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) não foi encontrado: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) não foi encontrado: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
Falha ao enviar notificação push: WebPush::PushServiceError : host: updates.push.services.mozilla.com, #<Net::HTTPBadGateway 502 Bad Gateway readbody=true> corpo: {"code":502,"errno":903,"error":"Bad
Aviso de depreciação: `SiteSetting.min_trust_level_for_here_mention` foi descontinuado. Por favor, use `SiteSetting.here_mention_allowed_groups` em seu lugar. (remoção no Discourse 3.3) Em /var/www/discourse/
Aviso de depreciação: Jobs::Chat::NotifyMentioned foi enfileirado com valores de argumento que não são serializados/deserializados corretamente para/do JSON. Isso significa que o job será executado com valores ligeiramente diferentes do que o
Aviso de depreciação: Jobs::Chat::NotifyWatching foi enfileirado com valores de argumento que não são serializados/deserializados corretamente para/do JSON. Isso significa que o job será executado com valores ligeiramente diferentes do que o
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) não foi encontrado: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) não foi encontrado: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) não foi encontrado: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) não foi encontrado: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
Aviso de depreciação: Jobs::Chat::NotifyMentioned foi enfileirado com valores de argumento que não são serializados/deserializados corretamente para/do JSON. Isso significa que o job será executado com valores ligeiramente diferentes do que o
Aviso de depreciação: Jobs::Chat::NotifyWatching foi enfileirado com valores de argumento que não são serializados/deserializados corretamente para/do JSON. Isso significa que o job será executado com valores ligeiramente diferentes do que o

Erros:

Exceção de job: Net::ReadTimeout
Exceção de job: Net::ReadTimeout
Exceção de job: Net::SMTPAuthenticationError
Exceção de job: Net::SMTPAuthenticationError
Exceção de job: Net::SMTPAuthenticationError
(google_oauth2) Falha de autenticação! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detectado
Exceção de job: Net::ReadTimeout
(github) Falha de autenticação! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detectado
(discord) Falha de autenticação! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detectado
default: Falha ao puxar imagem hotlinked (https://btt.community/uploads/default/optimized/2X/9/9394498c413ffd7cefbee2461a83d1a66b3b499c_2_690x388.jpeg) post: 10185 PG::UniqueViolation: ERROR: duplicat
Exceção de job: ERROR: duplicate key value violates unique constraint "pg_type_typname_nsp_index" DETAIL: Key (typname, typnamespace)=(gamification_leaderboard_cache_1_all_time_1, 2200) já existe
(google_oauth2) Falha de autenticação! invalid_credentials: OAuth2::Error, invalid_grant: Bad Request { "error": "invalid_grant", "error_description": "Bad Request" }
Exceção de job: Net::ReadTimeout
Exceção de job: fim de arquivo atingido
(github) Falha de autenticação! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detectado
(twitter) Falha de autenticação! invalid_credentials: OAuth::Unauthorized, 401 Unauthorized
Exceção de job: Net::SMTPAuthenticationError
Exceção de job: fim de arquivo atingido
(google_oauth2) Falha de autenticação! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detectado
(google_oauth2) Falha de autenticação! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detectado
Exceção de job: Net::ReadTimeout
Exceção de job: número incorreto de argumentos (0 fornecidos, 1 esperado)
Exceção de job: fim de arquivo atingido
Exceção de job: número incorreto de argumentos (0 fornecidos, 1 esperado)
(discord) Falha de autenticação! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detectado
Exceção de job: Net::ReadTimeout
Exceção de job: número incorreto de argumentos (0 fornecidos, 1 esperado)

Fatal:

ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "categories" does not exist LINE 1: SELECT "categories"."id" FROM "categories" LEFT JOIN categor...
ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "user_auth_tokens" does not exist LINE 1: SELECT "user_auth_tokens".* FROM "user_auth_tokens" WHERE ((...
ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "user_auth_tokens" does not exist LINE 1: SELECT "user_auth_tokens".* FROM "user_auth_tokens" WHERE ((...
ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "user_auth_tokens" does not exist LINE 1: SELECT "user_auth_tokens".* FROM "user_auth_tokens" WHERE ((...
ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "user_auth_tokens" does not exist LINE 1: SELECT "user_auth_tokens".* FROM "user_auth_tokens" WHERE ((...
Regexp::TimeoutError (tempo limite de match de regexp) lib/crawler_detection.rb:38:in `match?' lib/crawler_detection.rb:38:in `crawler?' lib/middleware/anonymous_cache.rb:129:in `is_crawler?' (eval):2:in `__comp
ActiveRecord::StatementInvalid (PG::InFailedSqlTransaction: ERROR: current transaction is aborted, commands ignored until end of transaction block ) lib/post_action_creator.rb:295:in `rescue in creat
NoMethodError (método `title' não definido para nil:NilClass) app/models/reviewable_queued_post.rb:166:in `perform_revise_and_reject_post' app/models/reviewable.rb:331:in `public_send' app/models/reviewab
ArgumentError (Lista vazia de atributos passada) lib/plugin/instance.rb:522:in `block in on' lib/discourse_event.rb:12:in `block in trigger' lib/discourse_event.rb:12:in `trigger' app/models/post_mover
ArgumentError (Lista vazia de atributos passada) lib/plugin/instance.rb:522:in `block in on' lib/discourse_event.rb:12:in `block in trigger' lib/discourse_event.rb:12:in `trigger' app/models/post_mover
ArgumentError (Lista vazia de atributos passada) lib/plugin/instance.rb:522:in `block in on' lib/discourse_event.rb:12:in `block in trigger' lib/discourse_event.rb:12:in `trigger' app/models/post_mover
NoMethodError (método `title' não definido para nil:NilClass) app/models/reviewable_queued_post.rb:166:in `perform_revise_and_reject_post' app/models/reviewable.rb:331:in `public_send' app/models/reviewab
ArgumentError (Lista vazia de atributos passada) lib/plugin/instance.rb:522:in `block in on' lib/discourse_event.rb:12:in `block in trigger' lib/discourse_event.rb:12:in `trigger' app/models/post_mover
ArgumentError (Lista vazia de atributos passada) lib/plugin/instance.rb:522:in `block in on' lib/discourse_event.rb:12:in `block in trigger' lib/discourse_event.rb:12:in `trigger' app/models/post_mover
ArgumentError (Lista vazia de atributos passada) lib/plugin/instance.rb:522:in `block in on' lib/discourse_event.rb:12:in `block in trigger' lib/discourse_event.rb:12:in `trigger' app/models/post_mover
ArgumentError (Lista vazia de atributos passada) lib/plugin/instance.rb:522:in `block in on' lib/discourse_event.rb:12:in `block in trigger' lib/discourse_event.rb:12:in `trigger' app/models/post_mover
NoMethodError (método `title' não definido para nil:NilClass) app/models/reviewable_queued_post.rb:166:in `perform_revise_and_reject_post' app/models/reviewable.rb:331:in `public_send' app/models/reviewab
NoMethodError (método `title' não definido para nil:NilClass) app/models/reviewable_queued_post.rb:166:in `perform_revise_and_reject_post' app/models/reviewable.rb:331:in `public_send' app/models/reviewab
ArgumentError (Lista vazia de atributos passada) lib/plugin/instance.rb:521:in `block in on' lib/discourse_event.rb:12:in `block in trigger' lib/discourse_event.rb:12:in `trigger' app/models/post_mover
ActiveRecord::RecordNotUnique (PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "index_topic_tags_on_topic_id_and_tag_id" DETAIL: Key (topic_id, tag_id)=(2907, 1) já existe

Para o sidekiq, não sei exatamente onde procurar. O sidekiq não lida com e-mails? Tem algo a ver com notificações?

Ok, vou tentar desinstalar todos eles e reconstruir no meio tempo.

Aqui estão as extensões que instalei antes que esse problema começasse (começou exatamente no mesmo dia):

  • Who’s Online
  • Cakeday
  • Signature
  • Adsense
  • ActivityPub (excluí completamente e reconstruí, já que não consegui desativar isso)

Como componente de tema:

  • GIF

EDIT: Esqueci de adicionar mais alguns

  • Discourse Private Topics
  • Discourse Force Moderation

Eu posso estar errado, mas isso é um componente de tema, certo?

Sim, verdade, é um componente de tema neste ponto, não sei o que é o quê, então o incluí de qualquer maneira. :grinning_face_with_smiling_eyes:

O Sidekiq lida com todos os trabalhos em segundo plano, incluindo notificações. Você tem uma mistura eclética de erros aí :slight_smile: Acho que reconheço alguns que já foram corrigidos e não devem ocorrer novamente após você realizar uma reconstrução/atualização. Embora eu veja:

Sidekiq está consumindo muita memória (usando: 558.27M)

Isso pode estar forçando-o a tentar novamente os trabalhos (incluindo o envio de notificações novamente). Você poderia clicar nesse e ver se há mais informações?

Ah, entendi. Se for esse o caso, de fato, esse pode ser o problema.

image

No lado esquerdo é a contagem, certo? Então aconteceu 10 vezes.

Aqui estão todas as vezes em que aconteceu:

8 de set. 18:55
25 de set. 21:44
4 de out. 21:53
10 de nov. 02:26 (O problema começou em 9 de novembro)
11 de nov. 11:37
11 de nov. 13:37
23 de nov. 18:43
25 de nov. 18:59
Dom 07:32
Seg 13:12

Mas o fato é que temos 4 GB de RAM e 2 GB de SWAP, e eu nunca o vi sendo usado mais do que isso:

E a imagem que acabei de tirar foi agora. Então, talvez isso aconteça quando os usuários estão no pico ou, se esse não for o caso, talvez eu precise aumentar o limite do Sidekiq?

INFO:

Sidekiq está consumindo muita memória (usando: 558.27M) para 'btt.community', reiniciando

BACKTRACE:

config/unicorn.conf.rb:164:in `check_sidekiq_heartbeat'
config/unicorn.conf.rb:244:in `master_sleep'
unicorn-6.1.0/lib/unicorn/http_server.rb:295:in `join'
unicorn-6.1.0/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/3.2.0/bin/unicorn:25:in `load'

/var/www/discourse/vendor/bundle/ruby/3.2.0/bin/unicorn:25:in `<main>'

env:

hostname	dc-app, [dc-discourse]
process_id	1215943
application_version	a55f924e279b45b81e69e720faeb38284aed90d4
time	Seg 13:12

Eu sei, isso não está provando nada, mas eu tenho o mesmo erro todos os dias algumas vezes[1] e qualquer coisa semelhante ao que o OP está experimentando não está acontecendo do meu lado.


  1. porque consertá-lo parece muito exigente e caro ↩︎

Ao olhar novamente, também vejo alguns erros que podem estar relacionados a isso:

1º:

Message (109 cópias relatadas)

Aviso de depreciação: Jobs::Chat::NotifyMentioned foi enfileirado com valores de argumento que não serializam/desserializam de/para JSON de forma limpa. Isso significa que o trabalho será executado com valores ligeiramente diferentes daqueles fornecidos para `enqueue`. Os valores dos argumentos devem ser strings, booleanos, números ou nil (ou arrays/hashes desses tipos de valor). (depreciado desde Discourse 2.9) (remoção em Discourse 3.0)
Em /var/www/discourse/plugins/chat/lib/chat/notifier.rb:355:in `notify_mentioned_users`

Backtrace

/var/www/discourse/lib/discourse.rb:1030:in `deprecate'
/var/www/discourse/app/jobs/base.rb:371:in `enqueue'
/var/www/discourse/plugins/chat/lib/chat/notifier.rb:355:in `notify_mentioned_users'
/var/www/discourse/plugins/chat/lib/chat/notifier.rb:78:in `notify_new'
/var/www/discourse/plugins/chat/app/jobs/regular/chat/process_message.rb:42:in `block in execute'
/var/www/discourse/lib/distributed_mutex.rb:53:in `block in synchronize'
/var/www/discourse/lib/distributed_mutex.rb:49:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:49:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:34:in `synchronize'
/var/www/discourse/plugins/chat/app/jobs/regular/chat/process_message.rb:7:in `execute'

2º:

Message (109 cópias relatadas)

Aviso de depreciação: Jobs::Chat::NotifyWatching foi enfileirado com valores de argumento que não serializam/desserializam de/para JSON de forma limpa. Isso significa que o trabalho será executado com valores ligeiramente diferentes daqueles fornecidos para `enqueue`. Os valores dos argumentos devem ser strings, booleanos, números ou nil (ou arrays/hashes desses tipos de valor). (depreciado desde Discourse 2.9) (remoção em Discourse 3.0)
Em /var/www/discourse/plugins/chat/lib/chat/notifier.rb:367:in `notify_watching_users`

Backtrace

/var/www/discourse/lib/discourse.rb:1030:in `deprecate'
/var/www/discourse/app/jobs/base.rb:371:in `enqueue'
/var/www/discourse/plugins/chat/lib/chat/notifier.rb:367:in `notify_watching_users'
/var/www/discourse/plugins/chat/lib/chat/notifier.rb:79:in `notify_new'
/var/www/discourse/plugins/chat/app/jobs/regular/chat/process_message.rb:42:in `block in execute'
/var/www/discourse/lib/distributed_mutex.rb:53:in `block in synchronize'
/var/www/discourse/lib/distributed_mutex.rb:49:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:49:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:34:in `synchronize'
/var/www/discourse/plugins/chat/app/jobs/regular/chat/process_message.rb:7:in `execute'

3º:

Message (29888 cópias relatadas)

Exceção do trabalho: número incorreto de argumentos (dado 0, esperado 1)


Backtrace

/var/www/discourse/plugins/discourse-private-topics/plugin.rb:20:in `get_filtered_category_ids'
/var/www/discourse/plugins/discourse-private-topics/plugin.rb:149:in `handle'
/var/www/discourse/plugins/discourse-follow/plugin.rb:131:in `block (2 levels) in activate!'
/var/www/discourse/lib/plugin/instance.rb:521:in `block in on'
/var/www/discourse/lib/discourse_event.rb:12:in `block in trigger'
/usr/local/lib/ruby/3.2.0/set.rb:511:in `each_key'
/usr/local/lib/ruby/3.2.0/set.rb:511:in `each'
/var/www/discourse/lib/discourse_event.rb:12:in `trigger'
/var/www/discourse/app/services/post_alerter.rb:205:in `after_save_post'
/var/www/discourse/app/jobs/regular/post_alert.rb:10:in `execute'

hostname	dc-app
process_id	190
application_version	95b7cbd8a13ec82003936ef9408ec83bc9f3c2ea
current_db	default
current_hostname	btt.community
job	Jobs::PostAlert
problem_db	default
time	Qua 1:55 pm

Olhando para o backtrace do 3º erro, parece que está relacionado aos plugins discourse-private-topics e discourse-follow. Eu não sou um especialista nisso, como disse, mas vou remover e reconstruir do zero…

Após a exclusão de plugins e a reconstrução, o 3º erro desapareceu, mas as primeiras e segundas notificações de depreciação ainda persistem.

E o problema não foi resolvido.

No Sidekiq, vejo dezenas de Jobs::PostAlert na seção de retentativas. Acho que é por isso que todas essas notificações voltam. Mas por que iria para retentativas em primeiro lugar se realmente envia o alerta?

Como você pode ver, há 63 páginas disso. Devo matá-los todos?

EDITAR:

Olhando para o erro, parece que ele é acionado pelos plugins discourse-private-topics e discourse-follow.

E mesmo quando eu os deletei, já que estavam na seção de retentativas, o Sidekiq ainda estava enviando essas notificações. Agora matei todas essas retentativas e espero que o problema tenha sido resolvido. Vou atualizar.

Ok, isso resolveu o problema. Então, no final, Job exception: wrong number of arguments (given 0, expected 1) este problema é causado por um ou ambos os plugins Private Topics Plugin e Discourse Follow. Talvez ambos combinados criem este problema, não sei e não acho que quero descobrir. Estou um pouco traumatizado aqui lidando com este problema por 21 dias. :grinning_face_with_smiling_eyes: Talvez os autores deste plugin gostariam de saber disso, então vou marcá-los aqui: @sam @RGJ

Obrigado @JammyDodger @Firepup650

Acho que aprendi como depurar um problema do Discourse e nunca mais instalar mais de 1 plugin de cada vez…

Obrigado por chegar ao fundo disso! Foi, de fato, um problema no meu plugin de tópicos privados que só acontecia quando o plugin de seguir também estava ativado.

Eu publiquei uma correção. Desculpe pela experiência traumatizante :wink:

Excelente depuração. :clap: :slight_smile: E obrigado pela correção rápida @RGJ :rocket:

Como este foi um problema com um plugin não #oficial, vou removê-lo da categoria Bug (embora não o mescle em Private Topics Plugin, pois é um pouco grande para isso).

Espero que agora você possa ter ambos os plugins instalados sem nenhuma notificação animada. :crossed_fingers: