Antworten im Thread werden nicht in der richtigen Reihenfolge angezeigt

Nach dem kürzlichen Update auf 2.6.0.beta3 werden einige Antworten in verschiedenen Threads in der falschen Reihenfolge angezeigt. Die Zeitstempel sind zwar korrekt, aber die betroffenen Antworten stehen immer am Ende des Threads.

Ich habe versucht, erneut zu aktualisieren und rake posts:reorder_posts für die betroffenen Themen auszuführen, aber dies hatte keine Wirkung. Gibt es sonst noch etwas, das ich tun kann, um sie korrekt neu zu sortieren? Oder handelt es sich hierbei um einen Fehler in Discourse? Die Beiträge werden für alle Benutzer gleich angezeigt.

Ein Beispiel aus einem der Themen, dies ist das Ende des Threads:

Hast du die letzten zwei Beiträge zufällig in dieses Thema verschoben? Das ist in diesem Fall das erwartete Verhalten.

Nein, sie waren schon immer in diesem Thema, und vor dem Upgrade waren sie in der erwarteten Reihenfolge der Antworten.

Das betrifft nicht nur ein Thema, sondern scheinbar alle. Es gibt ein oder zwei Antworten am Ende, die dort nicht hingehören.

Ich hatte das gleiche Problem.

Nein, ich verschiebe keine Beiträge in das Thema, aber die Antworten im Thread werden nicht in der richtigen Reihenfolge angezeigt.

Das Ausführen der Abfrage aus posts:reorder_posts zeigt, dass die sort_order für eine Reihe von Beiträgen seltsam ist. Es sieht so aus, als ob der Rake-Task sie aktualisieren sollte, tut es aber nicht.


Bei der Ausführung von:

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

Beim Versuch, die Rake-Aufgabe manuell nachzubilden, habe ich Folgendes ausgeführt:

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

mit folgendem Ergebnis:

Dies zeigt, warum die Rake-Aufgabe nichts bewirkt – sie geht davon aus, dass nichts zu tun ist… Die Rake-Aufgabe enthält eine zusätzliche where-Bedingung, die post_number mit new_post_number vergleicht und nicht sort_order.

Ich habe nun Folgendes manuell in der Datenbank ausgeführt:

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

Die Beiträge werden nun in der richtigen Reihenfolge angezeigt.

Ich verstehe immer noch nicht, wie es zu diesem Zustand gekommen ist. Wir greifen hier nur ein, wenn Beiträge verschoben werden.

Der Post-Creator setzt sort_order einfach auf post_number.

Langfristig bin ich mir nicht einmal sicher, ob ich die Spalte sort_order weiterhin führen möchte; sie scheint eine Art Fallstrick zu sein.

Sind hier Plugins im Spiel?

Ich verstehe es auch nicht. Beim Durchsehen des Codes konnte ich keinen Grund dafür finden. Etwas scheint die Sortierreihenfolge zu ändern, aber ich kann nicht erkennen, was.

Ich dachte zunächst, dass sie beim Ausführen eines Upgrades die Reihenfolge verloren hatten, da die Nachrichten, die nicht in der richtigen Reihenfolge waren, im Allgemeinen viel älter waren und zuvor an einer erwarteten Stelle erschienen waren. Als ich das obige SQL ausführte, schien alles in Ordnung zu sein, aber in der vergangenen Woche sind auch ein paar brandneue Beiträge nun in falscher Reihenfolge erschienen. Ich vermute, dass die betroffenen Beiträge immer Antworten auf einen anderen Beitrag sind. Zum Beispiel:

Wir haben folgende Plugins installiert:

Ich vermute, dass „Question-Answer

Ich habe das gleiche Problem. Ich hatte zuvor 502-Fehler beim Verschieben von Beiträgen aufgrund langer Themen. Ich bin mir nicht sicher, ob das damit zusammenhängt. Ich habe auch das Frage-Antwort-Plugin installiert, sehe aber nach dessen Deaktivierung immer noch Beiträge, die am Ende von Themen erscheinen.

Sehr wahrscheinlich ist dies kein wirklich unterstütztes oder offizielles Plugin. sort_order wird im Discourse-Kern nur inkonsistent verwendet; wir erwägen, diese Spalte zu entfernen.

Ich verschiebe dies nach Support, da ich dies als Fehler in einem nicht-offiziellen Plugin betrachte.

@angus Könntest du dir bitte dieses Problem ansehen? Ich habe dieses Plugin installiert, und die Antworten erschienen seither auf der gesamten Seite in der falschen Reihenfolge. Ich habe das Plugin gerade entfernt, aber die Antworten erscheinen immer noch in der falschen Reihenfolge.

Ich habe einen Test an einem einzelnen Beitrag durchgeführt, um zu prüfen, ob der folgende Befehl die durcheinander geratenen Antworten in einem einzelnen Beitrag korrigiert (nachdem das Q&A-Plugin entfernt wurde).

rake posts:reorder_posts[1896]

Leider erscheinen die Beiträge weiterhin nicht in der richtigen Reihenfolge.

Hey, es tut uns leid, dass du dieses Problem hattest. Bitte poste alle Updates dazu unter Question Answer Plugin. @mbcahyono und/oder ich werden uns bald melden. Dies ist keine allgemeine Frage zur Discourse-Unterstützung.