Destiny 2 - Ausfall und Zurücksetzung

11. Feb.. 2020 - Destiny Dev Team

Nach der Veröffentlichung von Hotfix 2.7.1.1 am Dienstag, den 11. Februar wurden wir über das Wiederauftreten eines Problems in Kenntnis gesetzt, durch das ein kleiner Teil der Spieler Währung und Materialien verloren hat. Dies ist das zweite Mal nach dem ersten Auftreten dieses Problems, durch das alle Spieler am 28. Januar mit der Veröffentlichung von Hotfix 2.7.1 Währung und Materialien verloren haben, was zur Zurücksetzung von Spieler-Konten führte. Bezüglich des Vorfalls vom 11. Februar haben wir ähnliche Maßnahmen getroffen und Konten auf den Zustand zurückgesetzt, in dem sie sich am 11. Februar um 17:30 Uhr MEZ (vor der Veröffentlichung von 2.7.1.1) befanden.

Da diese beiden Vorfälle in Ursache und Auswirkungen auf unsere Spieler identisch und beide innerhalb eines engen Zeitfensters aufgetreten sind, wollten wir euch erklären, was schiefgelaufen ist, wie wir den Fehler behoben haben und wie wir dafür sorgen werden, dass so etwas in Zukunft nicht mehr passiert. Betrachten wir zunächst, wie es überhaupt zu diesem Problem kommen konnte: ein spielinterner Fehler in der Verwaltung des Inventars und eine Reihe von Server-Konfigurationen, die das Problem erneut verursachten, nachdem es behoben worden war.

Inventar-Verwaltung

In Destiny 2 werden Quests ähnlich behandelt wie andere Gegenstände im Inventar, z. B. Währung und Materialien. Alle Gegenstände haben einen Zeitstempel, der auf dem Zeitpunkt basiert, zu dem sie zum Inventar des Spielers hinzugefügt wurden. Mithilfe dieses Zeitstempels werden Quests in der Reihenfolge aufgelistet, in der sie angenommen wurden. Das Spiel räumt das Inventar eines Spielers bei jeder Anmeldung auf, um zu gewährleisten, dass es mit allen Änderungen am Inhalt übereinstimmt wie z. B. der maximalen Anzahl an Gegenständen eines bestimmten Typs, die der Spieler besitzen darf.

Vor einigen Monaten meldeten Spieler, dass die Quests nicht korrekt sortiert wurden. Das wollten wir beheben. Das Team untersuchte diesen Fall und fand heraus, dass der Aufräumprozess den Zeitstempel einiger Quests zurücksetzte, was die chronologische Sortierung störte. Wir entschieden uns, das Problem zu beheben, indem wir das Zurücksetzen des Zeitstempels von Quests deaktivierten. Diese Lösung war prinzipiell vernünftig, doch durch subtile Nebenwirkungen deaktivierte sie zu viele Teile des Aufräumprozesses. Das Endergebnis war, dass das Spiel die falsche Höchstmenge für gestapelte Gegenstände (wie Währungen und Materialien) errechnete, was zum Verlust von Gegenständen oberhalb dieser Menge führte. Wir wussten, dass dieser Code wichtig war, und haben gemäß unserer üblichen Vorgehensweise die Veränderung des Codes von zwei Spezialisten begutachten lassen. Aber leider haben wir den Fehler nicht gefunden.

Ein paar Tage später fanden unsere internen Teams das Problem. Allerdings machten wir fälschlicherweise ein Versagen der Bearbeitung im Rahmen der Debug-Arbeitsabläufe verantwortlich, die wir zum Testen verwenden, statt einen Fehler innerhalb des Spiels. Trotz sorgfältiger Überprüfung ging das Problem in 2.7.1 live. Sobald der Fehler im Spiel identifiziert worden war, mussten wir im nächsten Schritt herausfinden, wie wir ihn beheben konnten, was uns zur nächsten Diskussion bringt: Spiel-Server und ihre Konfigurationen.

Server-Konfigurationen

Vor jeder großen Veröffentlichung (zum Beispiel „Festung der Schatten“) führen wir umfassende Belastungstests durch, bei denen wir versuchen, Nutzerverhalten und dessen Auswirkungen auf unsere Dienststruktur zu simulieren. Da es keinen Ersatz für Millionen von echten Spielern und ihr Verhalten gibt, ergänzen wir diese Tests, indem wir nach der Veröffentlichung die Leistungsmerkmale überwachen.

Im Oktober haben wir zusätzliche Server (in diesem Fall „Weltenserver“ genannt) eingespannt, um die erhöhte Prozessor- und Spieler-Belastung für den Start von „Festung der Schatten“ zu kompensieren; mehr Server, als wir je zuvor für diese Aufgabe verwendet haben. Die Verwendung so vieler Server hat ein paar kleinere Nebenwirkungen, die wir verfolgten, aber generell war sie für Spieler unsichtbar. Ein Problem war beispielsweise, dass ein kleiner Anteil dieser Server (weniger als 1%) beim Start abstürzte, weil die Anzahl der Server eine der unterstützenden Datenbanken überforderte. Unser Lösungsansatz war es, die abgestürzten Server einfach manuell neu zu starten, wann immer wir das Problem hatten, und dies schien es zu beheben, ohne sich störend auf die Spieler auszuwirken.

Springen wir zum Update von vor zwei Wochen. Das 2.7.1-Update enthielt den zuvor erwähnten Fehler, der Charakterdaten beschädigte und zu unserer allerersten Zurücksetzung von Charakterdaten führte. Wir versuchten, das Problem schnell mit einem Patch an den Servern zu beheben, statt einen vollständigen Build des Spielcodes einzusetzen. Dazu mussten wir eine Server-Einstellung ändern, um den Spielcode zu überschreiben, der Charakterdaten verarbeitet, und anschließend die Weltenserver neu starten, um diese Veränderung anzunehmen. 

Springen wir zum 11. Februar, als wir das 2.7.1.1-Update zusammen mit dem Start der Scharlach-Woche veröffentlicht haben. Nach der Veröffentlichung stürzten einige der Weltenserver aufgrund der hohen Anzahl an gleichzeitig startenden Servern beim Hochfahren erneut ab. Abermals starteten wir diese Server manuell neu und dachten, dass alles gut wäre. Das war es nicht. 

Ohne unser Wissen führte dieser Absturz dazu, dass diese Weltenserver die vorangegangene Korrektur der Beschädigung der Charakterdaten nicht übernahmen. Das führte dazu, dass ein kleiner Prozentsatz der Weltenserver den alten Code verwendeten und somit auch den Fehler, der die Charakterdaten beschädigte. Wir haben Prüfsysteme, die diese Art von Versionsfehlkonfigurationen entdecken, aber die Weltenserver-Abstürze und die folgenden manuellen Neustarts haben die Server die Prüfprozess überspringen lassen. Bis zu diesem Moment dachten wir, dass es unmöglich sei, diese Überbrückungen und Prüfungen zu überspringen.

Im Rahmen unserer Standardverfahren beim Überprüfen eines neuen Builds lassen wir unsere Test-Teams sich mit einer Reihe von Test-Konten anmelden, um die Spieler-Erfahrung nachzuvollziehen. Da wir hunderte von Servern in unserer Verbraucherumgebung haben, traf (leider) jeder manuelle Test, den wir durchgeführt haben, die „guten“ Server, und alle verfehlten sie den geringen Prozentsatz an Servern, die Probleme hatten. Also haben wir grünes Licht gegeben.

Als das Spiel am 11. Februar nach der Anwendung von 2.7.1.1 wieder online ging, meldeten Spieler den Verlust von Währung. Das Team begann sofort mit der Untersuchung und nahm das Spiel um 19:30 Uhr MEZ offline. In diesem Zeitraum hatten sich hunderttausende von individuellen Spielern im Spiel angemeldet oder über einen Drittanbieter auf ihre Charaktere zugegriffen. Unsere Untersuchung deckte auf, was wir für unmöglich gehalten hatten: eine kleine Anzahl unserer Weltenserver war ohne die richtige Konfiguration geladen worden, die das Problem aus 2.7.1 behoben hatte. Leider war jeder, auf dessen Charaktere über einen dieser veralteten Server zugegriffen worden war, von diesem Problem der Charakterschädigung betroffen.

Sobald wir bestätigt hatten, dass es das gleiche Problem wie am 28. Januar war, und verstanden hatten, wie es dazu gekommen war, entschied das Team, dass es am sinnvollsten wäre, sämtliche Charakterdaten aus der Sicherung wiederherzustellen, die wir direkt vor dem 2.7.1.1-Patch durchgeführt hatten – statt zu versuchen, jedes einzelne betroffene Konto zu identifizieren und dabei zu riskieren, etwas zu übersehen. 


Vorkehrungen

Das Team hat eine Reihe von zusätzlichen Sicherheitsvorkehrungen identifiziert, die verhindern sollten, dass dieses spezifische Problem zukünftig erneut auftritt. 

1) Wir haben unserem Prozess für „spontane Reparaturen“ an unseren Servern weitere Sicherheitsvorkehrungen hinzugefügt, die gewährleisten, dass sie nicht mit einer unerwarteten Version starten können. Diese Veränderung ist ab sofort aktiv.
2) Wir haben das Problem behoben, durch das ein kleiner Teil der Weltenserver beim Start abstürzt. Diese Korrektur wird mit Saison 10 eingeführt. 
3) Die dauerhafte Behebung der Charakterschädigung kommt mit dem nächsten Update als ausführbare Veränderung, die den Bedarf der Konfigurationsüberbrückung aufhebt. (Leider war der 2.7.1.1-Hotfix schon zu weit umgesetzt, um davon zu profitieren).
4) In Zukunft suchen wir nach Möglichkeiten, unsere Zurücksetzungs- und Wiederherstellungsmechanismen zu beschleunigen.
5) In einer kommenden Veröffentlichung kümmern wir uns um das Problem, das Server dazu bringt, das Laden von Konfigurationsdaten zu überspringen.
6) Zudem werden wir den Aufräumcode bei der Konto-Anmeldung besser schützen, um zu verhindern, dass sich in Zukunft Fehler in diesen kritischen Bereich einschleichen können.
7) Wir aktualisieren unsere Entwicklungsverfahren, um Probleme wie dieses früher im Verlauf der Veröffentlichung zu entdecken. 

Mit der Zurücksetzung vom 11. Februar befinden sich alle Charakter-Konten in dem Zustand, den sie am 11. Februar um 19:30 Uhr MEZ hatten. Das Team arbeitet zudem fieberhaft an Hotfix 2.7.1.2, der am 13. Februar erscheinen soll. Dieser Hotfix wird außerdem auch eine Lösung für das Problem der endlosen Dämmerklinge enthalten.

Uns ist bewusst, wie frustrierend der Ausfall und die Charakter-Zurücksetzung vom 11. Februar für euch alle gewesen sein muss, insbesondere wegen des Starts der Scharlach-Woche, vermutlich mindestens so frustrierend wie es für uns die Tatsache war, dass wir dieses Problem hätten vermeiden können. Wir entschuldigen uns für den dadurch entstandenen Ärger und die Unannehmlichkeiten und werden uns weiterhin bemühen, diese Art von Problemen in Zukunft gar nicht erst auftreten zu lassen. Und nicht vergessen, wenn ihr Probleme mit Destiny habt, könnt ihr uns auf unserer Bungie-Hilfeseite und auf Twitter @BungieHelp kontaktieren. Danke für eure Geduld!

Diese Seite verwendet Cookies, um dir die bestmögliche Benutzererfahrung zu bieten. Wenn du auf „Annehmen“ klickst, stimmst du den Vereinbarungen unter Cookie-Richtlinie und Datenschutzerklärung zu.