Verschieben von Beiträgen erzeugt fehlerhafte Benachrichtigungen

  • Affected App
    WoltLab Suite Forum

    Moin, moin!
    Mir ist aufgefallen, dass durch das Verschieben von Beiträgen Benachrichtigungen erzeugt werden können, welche den selben Titel besitzen, jedoch unterschiedlichen Themen zugehörig sind.
    Die Benachrichtigungen sehen dann in etwa so aus:

    Schritte, um den Fehler zu reproduzieren:

    Voraussetzungen:

    • Es existieren zwei Themen (Thema A, Thema B)
    • Ein „Benutzer A“ hat beide Themen abonniert
    • Es müssen vier Benutzer existieren (eventuell mit weniger Nutzern reproduzierbar)

    Durchführung:

    • Benutzer X antwortet auf Thema A
    • Benutzer X antwortet auf Thema B
    • Benutzer B antwortet auf Thema A
    • Die beiden neuen Beiträge aus Thema A werden in Thema B verschoben
    • Benutzer A hat nun zwei Benachrichtigungen mit dem selben Titel (neue Beiträge in Thema B)
    • Benutzer C antwortet auf Thema A
    • Benutzer A hat weiterhin zwei Benachrichtigungen, der neue Beitrag in Thema A wird der umbenannten Benachrichtigung für Thema B zugewiesen

    Endergebnis:
    Zwei Benachrichtigungen, eine für Thema A und eine für Thema B, beide tragen jedoch den Titel von Thema B.


    Erwartet:
    Zwei Benachrichtigungen, eine für Thema A, eine für Thema B, die erste Benachrichtigung für Thema A wäre mit dem Verschieben der Beiträge nichtig (die vorhergehenden Beiträge waren bereits gelesen), durch das Verschieben werden die Beiträge der bestehenden Benachrichtigung von Thema B zugewiesen, der neue Beitrag in Thema A nach dem Verschieben erzeugt eine neue Benachrichtigung.
    Aufpassen muss man dann wohl aber, wenn nur ein Teil der Beiträge verschoben wird, über die benachrichtigt wurde, da die Benachrichtigung dann weiterhin von Bedeutung ist.

    » Hat zu tief ins Glas geschaut: Hellseher verletzt sich an Wahrheitskugel «

    GitHub

  • Der Grund für dieses Verhalten liegt in der internen Funktionsweise:

    • Die Benachrichtigung für eine neue Antwort basiert auf dem Beitrag und nicht dem Thema selbst
    • Der Hash für die Zuordnung wird mit der ID des Themas gebildet und zur Lebenszeit der Benachrichtigung nicht mehr verändert
    • Das in der Benachrichtigung angezeigte Thema basiert auf den Informationen aus der Datenbank zum Beitrag, nach dem Verschieben ändert sich diese Information
    • Beim erneuten Antworten auf Thema A (siehe Schritt 6) wird der für das Stacking relevante Hash gebildet, dieser stimmt mit der ursprünglichen Benachrichtigung aus Schritt 2 überein (siehe Punkt 2 meiner Auflistung)

    Das Problem ist aber nur temporär, sobald die Benachrichtigung aus Schritt 2 als gelesen markiert wird ist der Spuk vorbei. Die Benachrichtigung wäre dann zwar immer noch zum Teil falsch, aber alle nachfolgenden Benachrichtigungen zu Thema A werden neu erzeugt.

    Ich bin an dieser Stelle unschlüssig wie wir damit verfahren sollen, der Aufwand dies zuverlässig zu verhindern ist sehr hoch und rein aus dem Bauch heraus ist dieses Szenario nicht besonders wahrscheinlich.

  • Ich bin an dieser Stelle unschlüssig wie wir damit verfahren sollen, der Aufwand dies zuverlässig zu verhindern ist sehr hoch

    Soll heißen, was halbes liefern und keinen Wert darauf legen was der User sich wünscht ?
    Oder lese ich das gerade falsch?

  • Soll heißen, was halbes liefern und keinen Wert darauf legen was der User sich wünscht ? Oder lese ich das gerade falsch?

    Es handelt sich dabei um einen Grenzfall der durch die interne Verarbeitung und Zuweisung der Benachrichtigungen zu bestimmten Objekten zu Stande kommt. Mein Kommentar ist eher eine Art Notiz, da es für dieses Problem schlichtweg keine einfache Lösung gibt.

    Genau genommen gibt es dieses Problem bereits seit WCF 2.0 (bzw. seit dem Notification-System für @Hawkes für WCF 1.1 auf dem es initial basierte), nur waren dort die Auswirkungen weniger offensichtlich. Das gleiche Szenario würde in Burning Board 4.0 beispielsweise dazu führen, dass vom System keine Benachrichtigung für neue Beiträge in dem Thema erzeugt wird, vorausgesetzt die andere Benachrichtigung ist noch ungelesen. Es tritt auch in diesem Fall maximal beim Verschieben von Beiträgen auf und nicht bei allen anderen Fällen, ein Grund warum dieses Problem so lange unentdeckt blieb.

  • Eventuell damit zusammenhängend scheinen Abonnements (WBB4.1 - ist evtl. in 5.1 auch noch) automatisch für einen neuen Thread erstellt zu werden, wenn aus einem anderen Thread ein Beitrag in einen eigenen Thread verschoben wird, sofern der Ursprungsthread bereits abonniert war.

    Oder wenn ein Thread deaktiviert (kann mal versehentlich passieren) und dann wieder aktiviert wird, werden alle Benachrichtigungen (auch alte aus dem Thread) neu geschickt. Kommt mir etwas unpraktisch vor.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!