Falha na mesclagem de usuários, entradas de banco de dados corrompidas devido a plugin de terceiros

Título original: Página inicial do fórum inacessível (tela em branco ou 404)

Sou moderador no fórum SocialHub em https://socialhub.activitypub.rocks, que é o fórum técnico para o protocolo ActivityPub que impulsiona o universo social do Fediverse.

Atualmente, está acontecendo uma Conferência ActivityPub de 4 dias, e houve mais atividade no fórum do que o habitual. Esta manhã, percebi que a página principal do fórum, quando acessada diretamente pela URL, exibe uma tela totalmente em branco (sem HTML retornado).

No entanto, links diretos, como Spritely Project: The Super Exciting Future Of Fediverse - ActivityPub - SocialHub, ainda funcionam e permitem acesso a outras funcionalidades, como a Pesquisa e o Painel de Administração. Ao clicar no logotipo no canto superior esquerdo, em vez da tela em branco, é exibida uma página 404.

Já avisei as pessoas envolvidas na gestão do servidor, e talvez seja necessário apenas reiniciá-lo. Mas, caso alguém reconheça isso como um problema mais sério, ficaria muito grato pelo seu feedback, para que possamos retomar as operações a tempo, antes do início das palestras da conferência hoje.

PS: O fórum está rodando a versão v2.6.0.beta1

Talvez você queira verificar o uso de recursos. O aumento de visitantes significa que mais recursos estão sendo utilizados.

Aumentar os recursos do servidor ajudará com o aumento de visitantes.

1 curtida

Obrigado! Os mantenedores do servidor ainda não estão online, mas já repassei esse link para eles :slight_smile:

Olá, tentei atualizar para a versão mais recente sem sucesso e também desabilitei o componente Force Mobile Homepage que adicionamos ontem.

Agradeceria orientações adicionais. Vou verificar os logs em busca de erros relevantes…

Abaixo está o que ocorre ao acessar a página inicial a partir de dentro do container:

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 curtida

Então, alterar a configuração da página inicial de Categorias e Mais Recentes para ‘Categorias e em Destaque’ restaura o acesso à página inicial. Teremos que ficar assim por enquanto… Suspeito que haja alguma interação entre componentes, mas vamos ver. Qualquer outra informação é muito bem-vinda. O show precisa continuar :slight_smile:

1 curtida

Seu problema parece ocorrer ao carregar as postagens mais recentes, o que resulta em um erro 404.

Alguém mudou o nome disso?

Vá em configurações, procure por “mais recentes” e veja o que acontece.

Obrigado @IAmGav pela sugestão: não temos personalização para nenhuma string relacionada a “Latest”.

Algumas páginas realmente continuam quebradas, incluindo uma categoria que precisamos :frowning:

Dado o código do componente da página inicial móvel, estou curioso sobre como verificar se algo mudou no banco de dados relacionado a setDefaultHomepage(settings.homepage);. Mas não acho que isso afetaria uma categoria. Então deve haver algo mais.


Acabei de limpar os logs para garantir que o erro atual não está sendo registrado. Parece ser um bug com /latest, /top e a categoria #meeting. Não tenho certeza do que está acontecendo… Também estou analisando os logs dentro do container para obter mais informações… Provavelmente relacionado a alguma postagem problemática na categoria #meeting

Acho que o problema está em ActiveRecord::RecordNotFound (Não foi possível encontrar todos os Usuários com 'id': (36, 50) (1 resultado encontrado, mas eram esperados 2).)

Os IDs correspondem a uma conta de usuário que foi mesclada, mas o processo parece ter falhado…

Eu também acho que esse é o problema. Não sou especialista, mas suspeito que haja uma postagem que referencia a conta antiga que não existe mais (e ela aparece em Mais Votados, Recentes e na categoria de conferência). Se esse for o problema, executar uma consulta SQL para excluir a postagem ou atualizar o ID do usuário nela pode ser uma opção? Qual seria a sintaxe?

O filtro ‘merge users’ nas ações de administração não exibe nenhum log. Acho que o processo de mesclagem falhou de alguma forma. @team, como posso investigar e resolver uma mesclagem de usuários falha? Parece que o resultado está correto, no entanto: a conta do usuário existe com ambos os endereços de e-mail. Deve haver alguns IDs órfãos em algum post, em algum lugar…

OK, reduzimos o problema a um único tópico…

1 curtida

Isso pode ajudar

Não, a mensagem diz que o usuário (fonte) não existe. Suspeito que a etapa DiscourseEvent.trigger(:merging_users, @source_user, @target_user) não tenha sido concluída. Onde posso encontrar o código?

Aqui vamos nós…

[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>]

Então, tentei descobrir o que fazer com isso… Concedê-los ao usuário existente não resolve nada. Deletá-los também não resolve nada.

Próximo passo: reconstruir os tópicos envolvidos do zero, destruir os antigos e ver o que acontece — a menos que alguém tenha uma ideia melhor…

1 curtida

PostReplyKey refere-se ao endereço de resposta em e-mails; ele não interage com a renderização da lista de tópicos.

Ao verificar o rastreamento de pilha, o erro ocorre dentro da serialização do TopicListSerializer, de alguma forma em lib/instance/public.rb.

Tente verificar a lista de usuários em destaque do tópico para o antigo ID de usuário (o conjunto de avatares que aparece na página inicial).

1 curtida

Oi @riking, obrigado por responder… Pelo que sei, além da PostReplyKey, não há menção a esse ID de usuário ausente. Mas pode não ser o ID do usuário antigo real, já que não conheço esse. Como você acha que eu poderia encontrá-lo – ou: o que eu deveria procurar nos logs com grep?

Se for usuários destacados no tópico, esta consulta deve encontrá-los:

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

A consulta não retornou nenhum resultado com o antigo user_id, mas retornou um tópico com o novo user_id, que é o tópico já identificado como problemático. Movi o tópico para outra categoria e, de fato, a categoria ActivityPub Conference 2020 - SocialHub está visível novamente.

Agora, acredito que haja uma referência ao user_id ausente 36 em algum lugar dos dados relacionados ao tópico 951, mas ainda não consegui encontrá-la. Ou existe outra dependência que estou ignorando, em relação ao usuário 295?

Você tem um stacktrace para esse erro?

Nada além do que publiquei em User merge failed, corrupted database entries due to third party plugin - #4 by hellekin e comentei depois:

1 curtida

Ah, perdi o stacktrace em User merge failed, corrupted database entries due to third party plugin - #4 by hellekin. Então, está falhando devido a um plugin. Acredito que um dos seus plugins armazenou algum tipo de informação de usuário que não foi mesclada. Poderia me fornecer uma lista dos plugins instalados, por favor?

2 curtidas