jsonscraper
Märkte
Zurück zum Journal

Cloudflare verzögert Code-Updates für Durable Objects

Nach einem Deployment kann ein aktives Objekt bis zu fünf Minuten auf der alten Version laufen. WebSocket-Verbindungen bleiben beim Wechsel erhalten, wenn sie die Hibernation API verwenden.

Redaktionsrichtlinie Fehler melden

Nach einem Deployment kann ein aktives Cloudflare Durable Object jetzt mit der aktuellen Codeversion weiterlaufen, bis es in den Ruhezustand wechselt oder die festgelegte Frist abläuft. Am 30. Oktober legte Cloudflare verzögerte Updates als Standard fest, mit einer maximalen Verzögerung von fünf Minuten. Für Entwickler ändert sich damit das Verhalten bereits laufender Objekte während eines Rollouts: Ein Update muss sie nicht sofort unterbrechen, und unterstützte WebSocket-Verbindungen können beim Wechsel auf eine neue Version erhalten bleiben.

Artikel: Cloudflare verzögert Code-Updates für Durable Objects, damit aktive Aufgaben abgeschlossen werden können
Zusammenfassung: Seit dem 30. Oktober wendet Cloudflare für Durable Objects standardmäßig verzögerte Code-Updates an. So haben aktive Objekte Zeit, in den Ruhezustand zu wechseln. Das garantiert jedoch weder den Abschluss jeder Operation noch den Erhalt aller WebSocket-Verbindungen.
Bildfunktion: Titelbild – die zentrale Idee
Abschnitt: 
Visuelles Motiv: Konzeptuelle redaktionelle Darstellung eines dauerhaften Cloud-Compute-Objekts
Die Illustration zeigt das Prinzip des Updates: Ein aktives Objekt kann bis zum Wechsel in den Ruhezustand oder bis zum Ablauf der festgelegten Frist mit dem bisherigen Code weiterlaufen.© jsonscraper · KI-generiert

Was während eines Deployments geschieht

Durable Objects sind adressierbare Objekte mit dauerhafter Identität und dauerhaftem Zustand, die Cloudflare unter anderem zur Koordination von Clients, für lang laufende Aufgaben und für WebSocket-Sitzungen verwendet. Für ein Objekt ist jeweils nur eine Codeversion aktiv. Bei einem sofortigen Austausch kann die aktive Instanz deshalb zurückgesetzt werden und laufende Arbeit oder Verbindungen unterbrechen.

Das Standardverhalten ist jetzt ein verzögerter Wechsel. Nach dem Rollout verarbeitet das aktive Objekt Anfragen weiterhin mit der alten Version. Wechselt es vorher in den Ruhezustand, wird beim nächsten Zugriff die neue Version gestartet. Sind fünf Minuten verstrichen und das Objekt ist noch aktiv, wird es zurückgesetzt und übernimmt die neue Version. Das Deployment des Workers wird davon unabhängig abgeschlossen: Die Verzögerung betrifft den Zeitpunkt, zu dem ein bereits aktives Objekt den neuen Code ausführt.

Für wen das nützlich ist

Die Änderung ist wichtig für Dienste, bei denen ein einzelnes Objekt Arbeit zwischen Anfragen aufrechterhält, etwa eine lange Sitzung, die Koordination mehrerer Clients oder eine WebSocket-Verbindung. Der verzögerte Wechsel schafft ein Zeitfenster, in dem ein solches Objekt seine aktuelle Arbeit auf natürliche Weise beenden oder in den Ruhezustand wechseln kann, bevor es aktualisiert wird. Für WebSocket-Verbindungen nennt Cloudflare eine besondere Voraussetzung: Verbindungen, die die Hibernation API verwenden, bleiben bestehen, wenn das Objekt nach dem Wechsel in den Ruhezustand den neuen Code übernimmt.

Für Teams bedeutet das konkret: Sie sollten ermitteln, welche aktiven Objekte länger als einige Minuten beschäftigt sein können, und prüfen, welche WebSocket-API zum Einsatz kommt. Davon hängt ab, ob das neue Deployment-Verhalten der Anwendung einen sanften Übergang ermöglicht oder ob die Verbindung beim erzwungenen Update beendet wird.

Fünf Minuten sind ein Zeitfenster, keine Garantie

Cloudflare beschreibt das verzögerte Update als Best-Effort-Verfahren: Ein Objekt kann früher zurückgesetzt werden, etwa bei einer Aktualisierung der Laufzeitumgebung. Wechselt es bis zum Ende der maximalen Verzögerung nicht in den Ruhezustand, setzt die Plattform die neue Version durch einen Reset durch. Wichtige Zustände sollten daher dauerhaft gespeichert und Operationen so gestaltet werden, dass sie erneut ausgeführt werden können. Die Cloudflare-Dokumentation empfiehlt, Zustände zu speichern, die Deployments überstehen müssen, statt sich auf den Arbeitsspeicher der aktiven Instanz zu verlassen.

Teams können das Verhalten in der Konfiguration von Durable Objects überschreiben: Sie können sofortige Updates festlegen oder für den verzögerten Wechsel eine andere Frist wählen. Der Sofortmodus ist sinnvoll, wenn eine neue Version unmittelbar aktiv werden muss, etwa bei einem dringenden Fix. Eine längere Verzögerung kann Objekten mehr Zeit geben, verlängert aber auch den Zeitraum, in dem ein Teil der Instanzen noch die alte Version verwendet.

Was vor dem nächsten Rollout zu prüfen ist

Prüfen Sie die Kompatibilität der Anfragen zwischen Worker und Durable Object für den Zeitraum, in dem beide mit unterschiedlichen Versionen laufen können. Stellen Sie sicher, dass kritische Zustände im Speicher und nicht nur im Arbeitsspeicher gesichert werden. Prüfen Sie bei WebSocket-Verbindungen, ob die Anwendung die Hibernation API verwendet: Gewöhnliche Verbindungen können beim Anwenden des Updates beendet werden. Wenn das Deployment einen sofortigen Wechsel erfordert, kontrollieren Sie die ausdrückliche Einstellung des Modus, statt sich auf den neuen Standardwert zu verlassen.

Cloudflare hat damit den üblichen Kompromiss beim Deployment verändert: Aktive Objekte erhalten eine begrenzte Zeit für einen natürlichen Übergang, während Teams das Update weiterhin per Einstellung beschleunigen können. Für Entwickler ist es am hilfreichsten, vor dem nächsten Rollout die Kompatibilität alter und neuer Versionen, die dauerhafte Speicherung des Zustands und den verwendeten WebSocket-Typ zu prüfen.

Menschen

Für diesen Artikel sind noch keine Personen aufgeführt.

Lesen Sie weiterOpenAI-Agenten übermittelten Geheimnisse über den CPU-Cache – ohne Netzwerk und gemeinsame Dateien
Lesen Sie den nächsten Artikel

Vom Artikel zur funktionierenden Integration

Entdecke die Social-Data-APIs von jsonscraper, teste Anfragen und entwickle deinen nächsten Workflow.

APIs entdecken