Etherpad-lite: Pads werden stillschweigend getrennt, wenn der Browser einen Hintergrund-Tab anhält

Erstellt am 3. Apr. 2020  ·  22Kommentare  ·  Quelle: ether/etherpad-lite

Mein Team verwendet etherpad-lite für viele interne Planungsarbeiten und um offene Community-Meetings zu dokumentieren, sodass wir oft mehrere Pads in verschiedenen Registerkarten für längere Zeit geöffnet haben. Wenn ein Pad die Verbindung verliert (weil jemand seinen Laptop geschlossen hat und sein Computer in den Ruhezustand gegangen ist oder weil der Browser Registerkarten ausgelagert hat, die sich eine Weile im Hintergrund befanden), zeigt das Pad häufig die Aufforderung „Getrennt“ an. Aber nicht immer.

Wir erleben regelmäßig stille Trennungen – wenn Sie es bemerken und neu laden, verbindet sich das Pad wieder einwandfrei. Wenn Sie jedoch zu einem Tab zurückkehren und _nicht_ bemerken, dass die Verbindung getrennt wurde, werden die von Ihnen vorgenommenen Änderungen nicht gespeichert, und es kann leicht viel Arbeit verloren gehen. Wir sind uns völlig bewusst, _warum_ ein Socket die Verbindung verlieren könnte, aber es ist unklar, warum manchmal eine Warnung ausgegeben wird und manchmal nicht.

Ist das ein bekanntes Problem? Sind wir seltsam in der Art und Weise, wie wir Etherpads verwenden? Ich fühle mich etwas unwohl dabei, dies als Fehler zu melden, aber ich habe eine Menge gesucht und kann nirgendwo eine Beschreibung dieses Problems finden.

Waiting on Testing

Hilfreichster Kommentar

Okay, cool, ich habe einen Patch drin, der einen großen Teil des Problems löst.

  • [x] Lässt keine Bearbeitungen während des Wiederherstellungszustands zu.
  • [ ] Ruft die richtige Revisionsnummer des Dokuments ab, bevor der nächste Änderungssatz übermittelt wird.

Wenn ich Punkt 2 nicht lösen kann, kann ich immer die interne Reload-Methode verwenden, um das Pad wieder in die Seite zu laden.

Das sollte heute Abend landen, jetzt zum Abendessen.

Alle 22 Kommentare

Nein, Sie verwenden Etherpad richtig und dies ist kein bekanntes Problem. Sie sollten eine getrennte Nachricht und ein Overlay haben. Können Sie einige genaue Schritte zum Replizieren angeben?

Danke, dass Sie uns das mitteilen.

Dies ist die Verbindungsstatuslogik: https://github.com/ether/etherpad-lite/blob/develop/src/static/js/pad_connectionstatus.js

Und die Logik für die automatische Wiederverbindung: https://github.com/ether/etherpad-lite/blob/develop/src/static/js/pad_automatic_reconnect.js

Wir hatten ein Problem mit einem Benutzer mit instabiler Internetverbindung. Dieser Fehler ist ziemlich schwer zu replizieren und wirklich ernst. Wir haben erfolglos versucht, eine instabile Verbindung zu simulieren.
Wir verwenden Etherpad 1.7.5

Betrachte das jetzt.

Warten Sie.. In settings.json

  /*
   * Time (in seconds) to automatically reconnect pad when a "Force reconnect"
   * message is shown to user.
   *
   * Set to 0 to disable automatic reconnection.
   */
  "automaticReconnectionTimeout": 0,

Dies ist die Standardeinstellung, was ist die Logik hier? Das ist doch sicher keine gute Voreinstellung?! :D cc @muxator irgendeine Ahnung, was hier los ist?

Meine Methode für den ersten Test ist..

  1. mit Pad verbinden. Geben Sie Sachen ein.
  2. Browser minimieren.
  3. killall node (lässt den Server verschwinden)
  4. Warte ein paar Minuten (Ich würde gerne wissen, wie die Zeitüberschreitung hier ist)
  5. Tab zurück zum Browser, sehen Sie, ob ich eine Nachricht habe.

Was ich erwartet hatte, würde passieren.

  1. Getrennte Nachricht wäre sichtbar.

Was passiert.

  1. Getrennte Nachricht ist sichtbar.

Ein anderer Ansatz..

  1. mit Pad verbinden. Geben Sie Sachen ein.
  2. Browser minimieren.
  3. Laptop schlafen legen
  4. Laptop aus dem Ruhezustand aufwecken
  5. Tab zurück zum Browser, sehen Sie, ob ich eine Nachricht habe.

Was ich erwarte:
Gehen Sie zurück zum Browser und prüfen Sie, ob die Verbindung wiederhergestellt wird

Was geschieht:
Versuchen Sie zu tippen und es trennt den Benutzer!

Als nächstes werde ich testen, ob ich länger auf die Wiederverbindung warte.

"automaticReconnectionTimeout": 0,

Es wurde hier eingeführt: https://github.com/ether/etherpad-lite/commit/009cd3124370d44a9c567332bf3be63826fd95b4#diff -8ab11a170627f11a32a1d642d7114743R126

Gute Nachrichten. Ich kann replizieren.

  1. mit Pad verbinden. Geben Sie Sachen ein.
  2. Browser minimieren. (wahrscheinlich nicht erforderlich)
  3. Laptop schlafen legen
  4. Laptop aus dem Ruhezustand aufwecken
  5. Tab zurück zum Browser, sehen Sie, ob ich eine Nachricht habe.

Was ich erwarte:
Gehen Sie zurück zum Browser und prüfen Sie, ob die Verbindung nach x Sekunden wiederhergestellt wird.

Was geschieht:
Es behauptet, wieder verbunden zu sein, aber wenn Sie etwas eingeben, wird ein fehlerhafter Änderungssatz gesendet.

https://www.youtube.com/watch?v=COyju-u9Sek

Ich denke, ich könnte den Test möglicherweise darauf reduzieren, das Netzwerk mithilfe von Netzwerktools verschwinden zu lassen.

  "automaticReconnectionTimeout": 0,

Es wurde hier eingeführt: 009cd31#diff-8ab11a170627f11a32a1d642d7114743R126

Okay, danke, und beachten Sie, dass @lpagliari jetzt an anderen Projekten arbeitet und das Problem daher nicht beheben kann. Ich glaube nicht, dass sie den Fehler "verursacht" hat, aber ich finde diese Einstellung einfach seltsam. Es fühlt sich an, als sollte sie standardmäßig aktiviert sein ...

Ich glaube nicht, dass sie den Fehler "verursacht" hat, aber ich finde diese Einstellung einfach seltsam.

Ich auch, wirklich nichts für ungut :-)

omg, es tut mir so leid, ich hatte diesen Thread in einem Tab geöffnet und eine Antwort getippt und nie auf Senden geklickt!

Ziemlich schwer zu replizieren ist auch meine Erfahrung. Ich weiß, dass sich das lächerlich anhört, aber das, was ich am nächsten kommen kann, war so etwas wie:

1) Öffnen Sie ein Etherpad in einem Tab
2) Lassen Sie Etherpad als aktive Registerkarte, schließen Sie meinen Laptopdeckel und warten Sie ein paar Sekunden, bis das Gerät einschläft und die Netzwerkverbindung verliert
3) Laptop öffnen und Registerkarte mit Etherpad erneut aufrufen

Ich sehe im Allgemeinen die Meldung "Wiederverbindung" auf dieser Registerkarte, und manchmal wird die Verbindung tatsächlich wiederhergestellt. Aber nicht immer, auch wenn die Meldung "Wiederverbindung" verschwindet. In diesem Fall gibt es keinen visuellen Hinweis darauf, dass Ihre Eingabe nicht gespeichert wird.

Ein paar Dinge, über die ich mich gewundert habe:

  • Wenn mein Laptop etwas zu lange braucht, um eine Netzwerkverbindung wiederherzustellen, ist es möglich, dass Etherpad in der Zwischenzeit den Versuch aufgibt, sich wieder mit dem Server zu verbinden
  • Ich bin mir nicht sicher, aber ich habe das Gefühl, dass das Klicken auf das Etherpad die Meldung "Wiederverbinden" verwerfen könnte ... vielleicht bricht sie das ab? Oder zumindest entlassen, damit Sie nie eine Folgefehlermeldung sehen würden

Also, vielleicht war mein Replikationsversuch nicht so lächerlich, wie ich dachte! Ich bin so froh, dass wir nicht die einzigen sind, die das gesehen haben. Vielen Dank _soviel_, dass Sie sich darum gekümmert haben.

Tut mir leid, dass ich Kinder auf mich geworfen habe. Davon muss ich jetzt abspringen.

einhändig hax.

  1. mit Pad verbinden
  2. Verwenden Sie ungeschickt, um alle Pakete zu verwerfen
  3. tippe smt
  4. dsiable ungeschickt
  5. nach der erneuten Verbindung versuchen Sie es erneut
    Kanalsatz errpr

Okay, cool, ich habe einen Patch drin, der einen großen Teil des Problems löst.

  • [x] Lässt keine Bearbeitungen während des Wiederherstellungszustands zu.
  • [ ] Ruft die richtige Revisionsnummer des Dokuments ab, bevor der nächste Änderungssatz übermittelt wird.

Wenn ich Punkt 2 nicht lösen kann, kann ich immer die interne Reload-Methode verwenden, um das Pad wieder in die Seite zu laden.

Das sollte heute Abend landen, jetzt zum Abendessen.

Okay, ich habe nur Zeit für einen temporären Fix, der das Pad beim erneuten Verbinden neu lädt, es ist nicht ideal, aber es funktioniert.

Es ist möglich, dass es nicht auf stale feuert. Ich habe getrennte Zustände, unzuverlässige Zustände, Schlaf-/Wachzustände getestet und es scheint sich angemessen zu verhalten.

Es ist eine weitaus bessere UX als das, was derzeit entwickelt wird, aber der Inhalt des Pads sollte wirklich neu geladen werden, ohne dass eine ganze Seite aktualisiert werden muss. Zumindest eine komplette Seitenaktualisierung in Etherpad ist billig, aber dennoch abgehackt.

Das ist einfach fantastisch, danke!!

Lässt keine Bearbeitungen während des Wiederherstellungszustands zu.

Im Ernst, nur diese Änderung wird so viel Kummer beseitigen. (Nun, „so viel“ ist vielleicht übertrieben, weil das Problem der stillen Trennung relativ selten vorkommt. Aber wenn Sie eine Menge Arbeit verlieren, weil Sie dachten, Sie wären verbunden, fühlt es sich ziemlich schlecht an.)

Dieses Problem wurde automatisch als veraltet markiert, da es in letzter Zeit keine Aktivität gab. Es wird geschlossen, wenn keine weiteren Aktivitäten stattfinden. Vielen Dank für Ihre Beiträge.

würde sicher gerne dieses eine Land sehen!

Siehe oben, der Fix wurde zusammengeführt.

Oh toll, danke! Freue mich auf 1.8.5!

@ryanpitts @joassouza Wir haben kürzlich einige Änderungen vorgenommen, um die Handhabung von Wiederverbindungen zu verbessern (siehe #4331). Bitte achten Sie beim Upgrade auf Regressionen.

Danke! Ich habe gesehen, dass 1.8.6 gelandet ist, und ich plane, entweder diese oder nächste Woche ein Upgrade durchzuführen.

@ryanpitts : Die Änderung, auf die ich mich beziehe, ist nicht in v1.8.6; es wird in der nächsten Version erscheinen.

Eine Warnung: Es gibt ein paar Fehler in v1.8.6 im Zusammenhang mit Sitzungen . Wenn Sie die HTTP-API verwenden, müssen Sie wahrscheinlich 3886e95c83af106f812da39987a304201689081d und 4332affba6264cc886878b36873266f9e1dbc457 auswählen (oder schauen Sie sich einfach den develop -Zweig an).

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen