Respostas no tópico aparecendo fora de ordem

Após atualizar recentemente para a versão 2.6.0.beta3, algumas respostas em vários tópicos estão aparecendo na ordem errada. Os carimbos de data/hora estão corretos, mas as respostas afetadas sempre aparecem no final do tópico.

Tentei atualizar novamente e executar rake posts:reorder_posts nos tópicos afetados, mas isso não teve nenhum efeito. Há mais alguma coisa que eu possa fazer para fazê-las reordenar corretamente? Ou isso é um bug no Discourse? As mensagens são exibidas da mesma forma para todos os usuários.

Um exemplo de um dos tópicos, aqui está o final do tópico:

Por acaso você moveu as últimas 2 postagens para esse tópico? Esse é o comportamento esperado nesse caso.

Não, eles sempre estiveram nesse tópico e, antes da atualização, estavam na ordem esperada das respostas.

Isso não ocorre apenas em um tópico, mas aparentemente em todos eles. Há uma ou duas respostas no final que não deveriam estar lá.

Eu tive o mesmo problema.

Não, eu não movo as postagens para o tópico, mas as respostas na thread aparecem fora de ordem.

Executar a consulta a partir de posts:reorder_posts mostra que o sort_order de vários posts está estranho, e parece que o rake deveria atualizá-los, mas não o faz.


Ao executar:

SELECT
id,
post_number,
sort_order,
ROW_NUMBER() OVER (
    PARTITION BY
    topic_id
    ORDER BY
    created_at,
    post_number
) AS new_post_number
FROM
posts

Ao tentar recriar manualmente a tarefa rake, executei:

WITH ordered_posts AS (
  SELECT
    id,
    ROW_NUMBER() OVER (
      PARTITION BY
        topic_id
      ORDER BY
        created_at,
        post_number
    ) AS new_post_number
  FROM
    posts
  /*where*/
)
SELECT
  p.post_number,
  p.sort_order,
  o.new_post_number
FROM
  posts AS p, ordered_posts AS o
WHERE
  p.id = o.id

resultando em:

O que mostra por que a tarefa rake não faz nada — ela acha que não há nada a fazer… A tarefa rake tem um where adicional comparando post_number com new_post_number, e não sort_order.

Agora executei manualmente no banco de dados:

WITH ordered_posts AS (
  SELECT
    id,
    ROW_NUMBER() OVER (
      PARTITION BY
        topic_id
      ORDER BY
        created_at,
        post_number
    ) AS new_post_number
  FROM
    posts
  /*where*/
)
UPDATE
  posts AS p
SET
  sort_order = o.new_post_number
FROM
  ordered_posts AS o
WHERE
  p.id = o.id AND
  p.sort_order <> o.new_post_number

e agora as postagens aparecem na ordem correta.

Ainda não entendo como você chegou a esse estado. A única vez que mexemos nisso é quando você move tópicos.

O criador de tópicos simplesmente define sort_order como post_number.

A longo prazo, nem tenho certeza se quero manter a coluna sort_order; parece ser uma espécie de arma de perigo.

Há algum plugin envolvido aqui?

Eu também não entendo. Não consegui encontrar nenhuma razão para isso ao examinar o código. Algo parece estar modificando a ordem de classificação, mas não consigo ver o que.

Eu achei que eles tivessem ficado fora de ordem quando executei uma atualização, já que as mensagens que estavam fora de ordem eram geralmente muito mais antigas e anteriormente apareciam em um local esperado. Quando executei o SQL acima, tudo parecia bem, mas na semana passada, algumas postagens totalmente novas também apareceram fora de ordem. Acredito que as postagens afetadas são sempre respostas a outra postagem. Por exemplo:

Temos os seguintes plugins instalados:

Acho que o plugin Question-Answer modifica a ordem de classificação, mas isso deveria afetar apenas tópicos de perguntas, não os gerais.

Tenho o mesmo problema. Já tive erros 502 ao mover posts devido a tópicos longos; não sei se isso tem alguma relação. Também tenho o plugin de perguntas e respostas instalado, mas ainda vejo posts aparecendo no final dos tópicos mesmo depois de desativá-lo.

Muito provavelmente, isso não é realmente um plugin suportado ou oficial. A ordem de classificação (sort_order) é usada de forma inconsistente no núcleo do Discourse, e estamos considerando remover essa coluna.

Movendo isso para Support, pois vejo isso como um bug em um plugin não oficial.

@angus Você pode dar uma olhada nesse problema? Instalei esse plugin e as respostas começaram a aparecer fora de ordem em todo o site. Acabei de remover o plugin e as respostas continuam aparecendo fora de ordem.

Executei um teste em um único post para verificar se o seguinte comando corrigiria as respostas fora de ordem em um post (após remover o plugin Q&A).

rake posts:reorder_posts[1896]

Infelizmente, os posts ainda estão aparecendo fora de ordem.

Oi, desculpe que você tenha enfrentado esse problema. Por favor, poste qualquer atualização sobre isso em Question Answer Plugin. @mbcahyono e/ou eu responderemos em breve. Esta não é uma pergunta geral de suporte ao Discourse.