Las notificaciones vuelven a aparecer incluso después de leerlas [plugin Temas Privados]

Hola, estoy usando la versión 3.2.0.beta4-dev (autoalojada) y en este commit. Después de las actualizaciones, los usuarios han comenzado a experimentar notificaciones dobles/triples en la interfaz de usuario. (Estoy hablando de la interfaz de usuario de Discourse, no de correos electrónicos, etc.)

Incluso después de hacer clic y leer, las notificaciones a veces vuelven. Yo también estoy teniendo esos problemas. No sé cómo solucionar esto o proporcionar registros útiles. Quería compartir esto, tal vez si es un problema global o en mi instancia.

Sospecho que es un problema de RAM, ¿cuánta RAM tiene tu instancia de Discourse?

Supongo que te refieres a la ‘interfaz de usuario de Discourse’.

Ok, pero este servidor ha estado activo durante casi 2 meses, este problema no apareció antes. En este momento en mi servidor tenemos 4 GB de RAM y la mitad está vacía. 2 GB de swap también están vacíos.

Creo que tal vez la actualización lo hizo, pero tal vez las extensiones lo hicieron. No estoy seguro. Supongo que el siguiente paso que daré será deshabilitar todas las extensiones y ver si ayuda.

Sí, he incluido una imagen en mi primera publicación. Me refiero a las notificaciones de Discourse UI.

He deshabilitado un montón de extensiones y el problema persiste. ¿Alguna idea o es posible que pueda degradar a la versión 3.2.0.beta3-dev? Gracias.

Hola de nuevo, sé que nadie tiene que ayudar y que este es un foro comunitario y, por supuesto, no soy un cliente de pago, pero este error me está resultando muy frustrante tanto a mí como a los usuarios. Hemos creado una comunidad hace 2 meses gracias a Discourse, donde tenemos 458 usuarios activos mensuales. Pero desde que nos ocurrió este error (hace 20 días) he intentado todo lo que he podido. Es bastante malo para la experiencia del usuario y ahora estoy intentando encontrar scripts para migrar a Flarum o alguna otra plataforma de foros. Solo mira esto:

output

Los usuarios reciben la misma notificación una y otra vez. Reciben notificaciones de hace 20 días, de hace 5 días o de cualquier momento. Incluso cuando descartas todas las notificaciones, vuelves a recibir la misma notificación después de un par de horas y ¡no hay forma de solucionarlo!

De nuevo, sé cuál es mi posición, esta es una plataforma comunitaria. No tengo derecho a quejarme, pero si nadie ayuda después de esta publicación, incluso si eso significa que todas nuestras publicaciones y temas anteriores serán eliminados (1.2 mil temas y 12.7 mil publicaciones), tendremos que ir a otro lugar…

Solo como nota, fui un defensor de Discourse. He creado videos sobre él en mi canal de YouTube. Las comunidades turcas suelen usar foros desactualizados y tuve una gran experiencia usando Discourse antes, así que después de abrir mi propio foro, quería que la gente conociera este software.

De todos modos, realmente no quiero perder todas las soluciones y el trabajo de otras personas en nuestro foro actual. Así que amablemente les pido ayuda de nuevo. Gracias.

Solo por curiosidad, ¿puedes encontrar algo en común entre las publicaciones que tienen notificaciones repetidas?

Según entiendo, es diferente para cada usuario. Pero se repiten. En mi cuenta, recibo las mismas notificaciones una y otra vez. Aunque esto no sucede en publicaciones de hace más de 21 días, para las cuales hicimos una actualización 3.2.0beta4 y también agregué extensiones a nuestro foro.

Inicialmente pensé que las extensiones desencadenaban esto, así que deshabilité todas las extensiones, pero no resolvió el problema. Por cierto, ¿quizás debería eliminarlas y reconstruir completamente? No lo sé.

Luego pensé que era por la beta4. Entonces, volví a la beta3, donde no teníamos el problema, pero aún persistía.

Lamentablemente, no hemos tenido otros informes de esto, por lo que es difícil determinar qué está sucediendo en tu sitio. ¿Tienes una instalación estándar?

¿Hay algo en tu página /logs o /sidekiq que pueda proporcionar más información?

Sí. Deshabilitar puede no eliminar por completo la pieza problemática. Pero, ¿qué plugins instalaste recientemente? Es posible que podamos saber si alguno ha tenido problemas reportados.

Sí, entiendo que es difícil precisar el problema. Por eso esperaba que desapareciera con el tiempo, pero no fue así.

Creo que tengo el mismo problema que este: Users getting notifictations from long ago

Sí, tengo una instalación estándar, pero la única diferencia es que estoy detrás de Cloudflare. Podrías pensar que esto se debe a Cloudflare, pero antes no teníamos este problema. No creo que sea probable.

No pude encontrar nada relacionado con las notificaciones, pero no soy un experto en esto, así que compartiré un fragmento rápido por si acaso tus ojos detectan algo.

Advertencias:


MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) no se pudo encontrar: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
Error al enviar notificación push: WebPush::Unauthorized : host: fcm.googleapis.com, #<Net::HTTPForbidden 403 Forbidden readbody=true> body: las credenciales VAPID en el encabezado de autorización no coinciden
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
Error al manejar la excepción en el middleware de la aplicación de excepciones: ArgumentError : Lista vacía de atributos pasados
Error al manejar la excepción en el middleware de la aplicación de excepciones: ArgumentError : Lista vacía de atributos pasados
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
El tema/componente DiscoTOC está generando errores: TypeError: Cannot read properties of null (reading 'en')
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
Error al manejar la excepción en el middleware de la aplicación de excepciones: ArgumentError : Lista vacía de atributos pasados
Error al enviar notificación push: WebPush::Unauthorized : host: updates.push.services.mozilla.com, #<Net::HTTPUnauthorized 401 Unauthorized readbody=true> body: {"code":401,"errno":109,"error":"Unaut
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
Error al manejar la excepción en el middleware de la aplicación de excepciones: ActiveRecord::RecordNotUnique : PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "index_topic_tags_on_topic_id_and_t
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
Error al procesar correctamente la respuesta interceptada: EOFError : fin de archivo alcanzado
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
Aviso de obsolescencia: `SiteSetting.anonymous_posting_min_trust_level` ha sido obsoleto. Por favor, utiliza `SiteSetting.anonymous_posting_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/disc
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) no se pudo encontrar: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) no se pudo encontrar: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
Error al enviar notificación push: WebPush::ResponseError : host: web.push.apple.com, #<Net::HTTPBadRequest 400 Bad Request readbody=true> body: {"reason":"VapidPkHashMismatch"}
el tema/componente discourse-gifs está generando errores: TypeError: Cannot read properties of null (reading 'en')
el tema/componente DiscoTOC está generando errores: TypeError: Cannot read properties of null (reading 'en')
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) no se pudo encontrar: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) no se pudo encontrar: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) no se pudo encontrar: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) no se pudo encontrar: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
Error al enviar notificación push: WebPush::Unauthorized : host: updates.push.services.mozilla.com, #<Net::HTTPUnauthorized 401 Unauthorized readbody=true> body: {"code":401,"errno":109,"error":"Unaut
Sidekiq está consumiendo demasiada memoria (usando: 558.27M) para 'btt.community', reiniciando
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) no se pudo encontrar: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) no se pudo encontrar: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) no se pudo encontrar: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) no se pudo encontrar: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
Error al enviar notificación push: WebPush::PushServiceError : host: updates.push.services.mozilla.com, #<Net::HTTPBadGateway 502 Bad Gateway readbody=true> body: {"code":502,"errno":903,"error":"Bad
Aviso de obsolescencia: `SiteSetting.min_trust_level_for_here_mention` ha sido obsoleto. Por favor, utiliza `SiteSetting.here_mention_allowed_groups` en su lugar. (eliminación en Discourse 3.3) En /var/www/discourse/
Aviso de obsolescencia: Jobs::Chat::NotifyMentioned fue encolado con valores de argumento que no se serializan/deserializan correctamente a/desde JSON. Esto significa que el trabajo se ejecutará con valores ligeramente diferentes que los originales.
Aviso de obsolescencia: Jobs::Chat::NotifyWatching fue encolado con valores de argumento que no se serializan/deserializan correctamente a/desde JSON. Esto significa que el trabajo se ejecutará con valores ligeramente diferentes que los originales.
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) no se pudo encontrar: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) no se pudo encontrar: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) no se pudo encontrar: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) no se pudo encontrar: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
Aviso de obsolescencia: Jobs::Chat::NotifyMentioned fue encolado con valores de argumento que no se serializan/deserializan correctamente a/desde JSON. Esto significa que el trabajo se ejecutará con valores ligeramente diferentes que los originales.
Aviso de obsolescencia: Jobs::Chat::NotifyWatching fue encolado con valores de argumento que no se serializan/deserializan correctamente a/desde JSON. Esto significa que el trabajo se ejecutará con valores ligeramente diferentes que los originales.

Errores:

Excepción de trabajo: Net::ReadTimeout
Excepción de trabajo: Net::ReadTimeout
Excepción de trabajo: Net::SMTPAuthenticationError
Excepción de trabajo: Net::SMTPAuthenticationError
Excepción de trabajo: Net::SMTPAuthenticationError
(google_oauth2) Fallo de autenticación! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detectado
Excepción de trabajo: Net::ReadTimeout
(github) Fallo de autenticación! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detectado
(discord) Fallo de autenticación! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detectado
default: Error al extraer la imagen enlazada (https://btt.community/uploads/default/optimized/2X/9/9394498c413ffd7cefbee2461a83d1a66b3b499c_2_690x388.jpeg) publicación: 10185 PG::UniqueViolation: ERROR: duplicat
Excepción de trabajo: ERROR: duplicate key value violates unique constraint "pg_type_typname_nsp_index" DETAIL: Key (typname, typnamespace)=(gamification_leaderboard_cache_1_all_time_1, 2200) ya existe
(google_oauth2) Fallo de autenticación! invalid_credentials: OAuth2::Error, invalid_grant: Bad Request { "error": "invalid_grant", "error_description": "Bad Request" }
Excepción de trabajo: Net::ReadTimeout
Excepción de trabajo: fin de archivo alcanzado
(github) Fallo de autenticación! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detectado
(twitter) Fallo de autenticación! invalid_credentials: OAuth::Unauthorized, 401 Unauthorized
Excepción de trabajo: Net::SMTPAuthenticationError
Excepción de trabajo: fin de archivo alcanzado
(google_oauth2) Fallo de autenticación! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detectado
(google_oauth2) Fallo de autenticación! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detectado
Excepción de trabajo: Net::ReadTimeout
Excepción de trabajo: número incorrecto de argumentos (recibido 0, esperado 1)
Excepción de trabajo: fin de archivo alcanzado
Excepción de trabajo: número incorrecto de argumentos (recibido 0, esperado 1)
(discord) Fallo de autenticación! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detectado
Excepción de trabajo: Net::ReadTimeout
Excepción de trabajo: número incorrecto de argumentos (recibido 0, esperado 1)

Fatales:

ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: la relación "categories" no existe LINE 1: SELECT "categories"."id" FROM "categories" LEFT JOIN categor...
ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: la relación "user_auth_tokens" no existe LINE 1: SELECT "user_auth_tokens".* FROM "user_auth_tokens" WHERE ((...
ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: la relación "user_auth_tokens" no existe LINE 1: SELECT "user_auth_tokens".* FROM "user_auth_tokens" WHERE ((...
ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: la relación "user_auth_tokens" no existe LINE 1: SELECT "user_auth_tokens".* FROM "user_auth_tokens" WHERE ((...
ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: la relación "user_auth_tokens" no existe LINE 1: SELECT "user_auth_tokens".* FROM "user_auth_tokens" WHERE ((...
Regexp::TimeoutError (tiempo de espera agotado para la coincidencia de expresión regular) 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: la transacción actual está abortada, los comandos se ignorarán hasta el final del bloque de transacción) lib/post_action_creator.rb:295:in `rescue in creat
NoMethodError (método `title' no 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 vacía de atributos pasados) 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 vacía de atributos pasados) 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 vacía de atributos pasados) 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' no 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 vacía de atributos pasados) 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 vacía de atributos pasados) 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 vacía de atributos pasados) 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 vacía de atributos pasados) 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' no 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' no 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 vacía de atributos pasados) 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) ya existe

Para Sidekiq no sé exactamente dónde buscar. ¿No es Sidekiq el que gestiona los correos electrónicos? ¿Tiene algo que ver con las notificaciones?

Vale, intentaré desinstalarlos todos y reconstruir mientras tanto.

Estos son los complementos que instalé antes de que comenzara este problema (comenzó exactamente ese día):

  • Who’s Online
  • Cakeday
  • Signature
  • Adsense
  • ActivityPub (lo eliminé por completo y reconstruí ya que no pude desactivarlo)

Como componente de tema:

  • GIF

EDITO: Me olvidé de agregar un par más:

  • Discourse Private Topics
  • Discourse Force Moderation

Podría estar equivocado, pero eso es un componente temático, ¿verdad?

Sí, es cierto, es un componente temático en este punto, no sé qué es qué, así que lo incluí de todos modos. :grinning_face_with_smiling_eyes:

Sidekiq se encarga de todos los trabajos en segundo plano, incluidas las notificaciones. Tienes una mezcla ecléctica de errores ahí :slight_smile: Creo que reconozco algunos que ya se han corregido y no deberían volver a ocurrir después de que realices una reconstrucción/actualización. Aunque veo:

Sidekiq está consumiendo demasiada memoria (usando: 558.27M)

Lo que podría estar obligándolo a reintentar trabajos (incluido el envío de notificaciones nuevamente). ¿Podrías hacer clic en ese y ver si hay más información?

Oh, ya veo, si ese es el caso, de hecho, ese podría ser el problema.

image

A la izquierda está el conteo, ¿verdad? Así que sucedió 10 veces.

Aquí están todas las veces que sucedió:

8 sep 18:55
25 sep 21:44
4 oct 21:53
10 nov 02:26 (El problema comenzó el 9 de noviembre)
11 nov 11:37
11 nov 13:37
23 nov 18:43
25 nov 18:59
dom 07:32
lun 13:12

Pero la cosa es que tenemos 4 GB de RAM y 2 GB de SWAP, y nunca lo veo usado más allá de esto:

Y la imagen que tomé es ahora mismo. Así que tal vez esto sucede cuando los usuarios están en su punto máximo o, si ese no es el caso, ¿tal vez necesito aumentar el umbral de Sidekiq?

INFO:

Sidekiq está consumiendo demasiada memoria (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	lun 13:12

Lo sé, esto no demuestra nada, pero tengo el mismo error todos los días varias veces[1] y nada similar a lo que está experimentando el OP me está sucediendo.


  1. porque arreglarlo suena demasiado exigente y caro ↩︎

Al mirar de nuevo, también veo algunos errores que podrían estar relacionados con esto:

1º:

Mensaje (109 copias reportadas)

Aviso de depreciación: Jobs::Chat::NotifyMentioned se encoló con valores de argumento que no se serializan/deserializan limpiamente desde/hacia JSON. Esto significa que el trabajo se ejecutará con valores ligeramente diferentes a los proporcionados a `enqueue`. Los valores de los argumentos deben ser cadenas, booleanos, números o nulos (o matrices/hashes de esos tipos de valor). (obsoleto desde Discourse 2.9) (eliminación en Discourse 3.0)
En /var/www/discourse/plugins/chat/lib/chat/notifier.rb:355:in `notify_mentioned_users`

Rastreo

/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º:

Mensaje (109 copias reportadas)

Aviso de depreciación: Jobs::Chat::NotifyWatching se encoló con valores de argumento que no se serializan/deserializan limpiamente desde/hacia JSON. Esto significa que el trabajo se ejecutará con valores ligeramente diferentes a los proporcionados a `enqueue`. Los valores de los argumentos deben ser cadenas, booleanos, números o nulos (o matrices/hashes de esos tipos de valor). (obsoleto desde Discourse 2.9) (eliminación en Discourse 3.0)
En /var/www/discourse/plugins/chat/lib/chat/notifier.rb:367:in `notify_watching_users`

Rastreo

/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º:

Mensaje (29888 copias reportadas)

Excepción de trabajo: número incorrecto de argumentos (se dieron 0, se esperaban 1)

Rastreo

/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	We 1:55 pm

Mirando el rastreo del 3er error, parece que está relacionado con los plugins discourse-private-topics y discourse-follow. No soy un experto en esto, como dije, pero déjame eliminar y reconstruir esto desde cero…

Tras eliminar los plugins y reconstruir, el tercer error desapareció, pero las dos primeras notificaciones de advertencia de obsolescencia aún persisten.

Y el problema no está resuelto.

En Sidekiq veo que hay docenas de Jobs::PostAlert en la sección de reintentos. Supongo que por eso vuelven todas esas notificaciones. Pero, ¿por qué iría a reintentos en primer lugar si en realidad envía la alerta?

Como puedes ver, hay 63 páginas de esto. ¿Debería matarlas a todas?

EDITAR:

Mirando el error, parece que se activa desde los plugins discourse-private-topics y discourse-follow.

E incluso cuando los eliminé, ya que estaban en la sección de reintentos, Sidekiq seguía enviando esas notificaciones. Ahora he eliminado todos esos reintentos y espero que el problema se haya resuelto. Lo actualizaré.

De acuerdo, eso resolvió el problema. Así que al final Job exception: wrong number of arguments (given 0, expected 1) este problema es causado por uno o ambos de los plugins Private Topics Plugin y Discourse Follow. Quizás ambos combinados crean este problema, no lo sé y no creo que quiera averiguarlo. Estoy un poco traumatizado lidiando con este problema durante 21 días. :grinning_face_with_smiling_eyes: Quizás a los autores de este plugin les gustaría saber esto, así que los etiquetaré aquí: @sam @RGJ

Gracias @JammyDodger @Firepup650

Supongo que aprendí a depurar un problema de Discourse y a no instalar nunca más de 1 plugin a la vez…

¡Gracias por llegar al fondo de esto! De hecho, fue un problema en mi plugin de temas privados que solo ocurría cuando el plugin de seguimiento también estaba habilitado.

He implementado una solución. Disculpa la experiencia traumática :wink:

Excelente depuración. :clap: :slight_smile: Y gracias por la rápida solución @RGJ :rocket:

Dado que se trataba de un problema con un plugin no oficial (#non-official), lo sacaré de la categoría de errores (Bug) (aunque no lo fusionaré en Private Topics Plugin ya que es un poco grande para eso).

Espero que ahora puedas tener ambos plugins instalados sin ninguna notificación emocionante. :crossed_fingers: