Fallo en la fusión de usuarios, entradas de base de datos corruptas debido a un plugin de terceros

Título original: Página principal del foro inaccesible (pantalla en blanco o 404)

Soy moderador del foro de SocialHub en https://socialhub.activitypub.rocks, que es el foro tecnológico del protocolo ActivityPub que impulsa el ámbito social del Fediverso.

Actualmente se está celebrando la Conferencia ActivityPub, que lleva 4 días en marcha, y ha habido más actividad en el foro de lo habitual. Esta mañana observé que la página principal del foro, cuando se accede directamente mediante la URL, muestra una pantalla completamente en blanco (no se devuelve ningún HTML).

Sin embargo, los enlaces profundos, como Spritely Project: The Super Exciting Future Of Fediverse - ActivityPub - SocialHub, siguen funcionando y permiten acceder a otras funcionalidades, como la búsqueda y el panel de administración. Al hacer clic en el logotipo de la esquina superior izquierda, en lugar de la pantalla en blanco, se muestra una página 404.

He notificado a las personas encargadas de gestionar el servidor, y quizás un reinicio del servidor sea todo lo necesario. Pero, por si acaso alguien reconoce esto como un problema más grave, agradecería mucho sus comentarios, para que podamos volver a estar operativos a tiempo antes de que comiencen las charlas de la conferencia hoy.

PD: El foro está ejecutando la versión v2.6.0.beta1

Quizás quieras revisar el uso de recursos. Un aumento en los visitantes significa que se están utilizando más recursos.

Aumentar los recursos del servidor ayudará a hacer frente al incremento de visitantes.

1 me gusta

¡Gracias! Los administradores del servidor aún no están en línea, pero les he pasado este enlace :slight_smile:

Hola, procedí a actualizar a la última versión sin obtener resultados, e intenté desactivar el componente Force Mobile Homepage que agregamos ayer.

Agradecería más orientación. Revisaré los registros en busca de errores relevantes…

Esto es lo que muestra la llamada a la página de inicio desde dentro del contenedor:

Started GET "/" for 37.172.69.223 at 2020-10-04 07:32:15 +0000
Processing by CategoriesController#index as HTML
Completed 404 Not Found in 281ms (ActiveRecord: 0.0ms | Allocations: 67648)
ActiveRecord::RecordNotFound (Couldn't find all Users with 'id': (36, 50) (found 1 results, but was looking for 2).)
lib/plugin/instance.rb:259:in `public_send'
lib/plugin/instance.rb:259:in `block (2 levels) in add_to_class'
(eval):48:in `_fast_attributes'
lib/freedom_patches/ams_include_without_root.rb:57:in `include!'
app/controllers/categories_controller.rb:61:in `block (2 levels) in index'
app/controllers/categories_controller.rb:40:in `index'
app/controllers/application_controller.rb:354:in `block in with_resolved_locale'
app/controllers/application_controller.rb:354:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:68:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:336:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:22:in `call'
lib/middleware/request_tracker.rb:176:in `call'
1 me gusta

Así que, cambiar la configuración de la página de inicio de Categorías y Últimas a ‘Categorías y Destacadas’ devuelve el acceso a la página de inicio. Tendrá que servir por ahora… Sospecho que es una interacción entre componentes de algún tipo, pero ya veremos. Cualquier otra aclaración será muy bien recibida. El espectáculo debe continuar :slight_smile:

1 me gusta

Parece que tu problema ocurre al cargar las publicaciones más recientes, lo que genera un error 404.

¿Alguien cambió el nombre de esto?

Ve a la configuración, busca ‘latest’ y observa qué sucede.

Gracias @IAmGav por la sugerencia: no tenemos personalización para ninguna cadena relacionada con “Último”.

Algunas páginas siguen rotas, incluida una categoría que realmente necesitamos :frowning:

Dado el código del componente de la página de inicio móvil forzada, me pregunto cómo verificar si ha habido cambios en la base de datos relacionados con setDefaultHomepage(settings.homepage);. Pero no creo que esto afecte a una categoría. Así que debe haber algo más.


Acabo de limpiar los registros para asegurarme de que el error actual no se registra realmente. Parece ser un error con /latest, /top y la categoría #meeting. No estoy seguro de qué está pasando… También estoy revisando los registros dentro del contenedor para obtener más información… Probablemente esté relacionado con alguna publicación disfuncional en la categoría #meeting

Creo que el problema surge con ActiveRecord::RecordNotFound (No se pudieron encontrar todos los Usuarios con 'id': (36, 50) (se encontraron 1 resultados, pero se buscaban 2).)

Los IDs coinciden con una cuenta de usuario que fue fusionada, pero parece que el proceso se ha roto…

Yo también creo que ese es el problema. No soy un experto, pero supongo que hay una publicación que hace referencia a una cuenta antigua que ya no existe (y aparece en «Mejores», «Recientes» y en la categoría de conferencia). Si ese es el problema, ¿sería una opción ejecutar una consulta SQL para eliminar la publicación o actualizar el ID de usuario en ella? ¿Cuál sería la sintaxis?

El filtro de fusionar usuarios en las acciones de administración no muestra ningún registro. Creo que el proceso de fusión falló de alguna manera. @equipo, ¿cómo puedo investigar y solucionar una fusión de usuarios fallida? Parece que el resultado es bueno, sin embargo: la cuenta de usuario existe con ambas direcciones de correo electrónico. Debe haber algunos identificadores huérfanos en algunas publicaciones en algún lugar…

De acuerdo, hemos reducido el problema a un solo tema…

1 me gusta

Esto podría ayudar

No, dice que el usuario (fuente) no existe. Sospecho que el paso DiscourseEvent.trigger(:merging_users, @source_user, @target_user) no se completó. ¿Dónde puedo encontrar el código?

Aquí vamos…

[39] pry(main)> PostReplyKey.where(user_id: 36)
=> [#<PostReplyKey:0x0000558954b92d68 id: 9793, user_id: 36, post_id: 3409, reply_key: "00257885-fe73-e76d-09fb-f0f708c2f032", created_at: Sat, 03 Oct 2020 19:37:20 UTC +00:00, updated_at: Sat, 03 Oct 2020 19:37:20 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6e78 id: 9120, user_id: 36, post_id: 3174, reply_key: "b726e441-1c6c-bd60-27ac-8d8d5feef3d7", created_at: Fri, 02 Oct 2020 14:21:48 UTC +00:00, updated_at: Fri, 02 Oct 2020 14:21:48 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6db0 id: 9802, user_id: 36, post_id: 3413, reply_key: "86e179a1-7516-616c-1040-c26c0539f39d", created_at: Sat, 03 Oct 2020 19:41:36 UTC +00:00, updated_at: Sat, 03 Oct 2020 19:41:36 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6ce8 id: 9821, user_id: 36, post_id: 3418, reply_key: "573f48a4-8263-4759-44f0-f6cb26b66f38", created_at: Sat, 03 Oct 2020 20:37:40 UTC +00:00, updated_at: Sat, 03 Oct 2020 20:37:40 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6c20 id: 9822, user_id: 36, post_id: 3419, reply_key: "9371479c-eeb4-1009-176d-761a854a4ddb", created_at: Sat, 03 Oct 2020 20:40:08 UTC +00:00, updated_at: Sat, 03 Oct 2020 20:40:08 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6b58 id: 9400, user_id: 36, post_id: 3245, reply_key: "e1cd57aa-a811-21f9-5e24-84439e184a8e", created_at: Fri, 02 Oct 2020 21:35:12 UTC +00:00, updated_at: Fri, 02 Oct 2020 21:35:12 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6a90 id: 8613, user_id: 36, post_id: 3067, reply_key: "407edb15-e89d-4369-9fee-1e5eab83385d", created_at: Wed, 30 Sep 2020 13:50:17 UTC +00:00, updated_at: Wed, 30 Sep 2020 13:50:17 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd69c8 id: 9517, user_id: 36, post_id: 3288, reply_key: "140a48d2-1a40-d429-f6e2-2bbe37b4865d", created_at: Sat, 03 Oct 2020 09:54:40 UTC +00:00, updated_at: Sat, 03 Oct 2020 09:54:40 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6900 id: 9736, user_id: 36, post_id: 3388, reply_key: "76cacf9b-5353-0653-806d-f3c2df6689eb", created_at: Sat, 03 Oct 2020 18:37:11 UTC +00:00, updated_at: Sat, 03 Oct 2020 18:37:11 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6838 id: 8643, user_id: 36, post_id: 3011, reply_key: "6d384213-98db-652c-89eb-1979731bb311", created_at: Wed, 30 Sep 2020 20:55:31 UTC +00:00, updated_at: Wed, 30 Sep 2020 20:55:31 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6770 id: 9772, user_id: 36, post_id: 3400, reply_key: "1e9e0b2e-ecd6-3654-d0da-6e01982a890f", created_at: Sat, 03 Oct 2020 19:22:38 UTC +00:00, updated_at: Sat, 03 Oct 2020 19:22:38 UTC +00:00>]

Así que intenté averiguar qué hacer con esto… Otorgárselos al usuario existente no resuelve nada. Borrarlos tampoco resuelve nada.

Siguiente paso: reconstruir los temas involucrados desde cero, destruir los antiguos y ver qué sucede: a menos que alguien tenga una idea mejor…

1 me gusta

PostReplyKey se refiere a la dirección de respuesta en los correos electrónicos; no interactúa con la representación de la lista de temas.

Al revisar el rastreo de la pila, el error ocurre dentro de TopicListSerializer al volcar datos, de alguna manera dentro de lib/instance/public.rb.

Intenta verificar la lista de usuarios destacados del tema para el ID de usuario antiguo (el conjunto de avatares que aparece en la página de inicio).

1 me gusta

Hola @riking, gracias por responder… Por lo que sé, aparte de PostReplyKey, no hay ninguna mención a este ID de usuario faltante. Pero podría no ser el antiguo ID de usuario real, ya que no lo conozco. ¿Cómo crees que podría encontrarlo, o: qué debería buscar con grep en los registros?

Si se trata de usuarios destacados en el tema, esta consulta debería encontrarlo:

SELECT id
FROM topics
WHERE featured_user1 = 1234
OR featured_user2 = 1234
OR featured_user3 = 1234
OR featured_user4 = 1234
OR last_post_user_id = 1234

La consulta no devolvió ningún resultado con el ID de usuario antiguo, pero sí un tema con el nuevo ID de usuario, que es el tema que ya se había identificado como problemático. Moví el tema a otra categoría y, de hecho, la categoría ActivityPub Conference 2020 - SocialHub ahora es visible nuevamente.

Ahora supongo que hay una referencia al ID de usuario faltante 36 en algún lugar de los datos relacionados con el tema 951, pero no he podido encontrarlo hasta ahora. ¿O hay otra dependencia que estoy pasando por alto con respecto al usuario 295?

¿Tienes un rastreo de pila para ese error?

Nada más de lo que publiqué en User merge failed, corrupted database entries due to third party plugin - #4 by hellekin y comenté después:

1 me gusta

Oh, me perdí el rastreo de la pila en User merge failed, corrupted database entries due to third party plugin - #4 by hellekin. Así que está fallando debido a un plugin. Supongo que uno de tus plugins almacenó algún tipo de información de usuario que no se ha fusionado. ¿Podrías darme una lista de los plugins instalados, por favor?

2 Me gusta