ist jetzt verfügbar! Lesen Sie über die neuen Funktionen und Fehlerbehebungen vom November.

1.7 Rollback Incident Report

3. November 2016 von Wade Anderson, @waderyan_

Letzte Nacht, Mittwoch, 2. November, haben wir das Release 1.7 von Visual Studio Code auf 1.6.1 zurückgesetzt. Wenn Sie auf 1.7 aktualisiert hätten, wären Sie aufgefordert worden, auf 1.6.1 zurückzukehren. Heute Morgen haben wir eine Abhilfemaßnahme implementiert, ein neues Release erstellt und Sie sollten jetzt VS Code 1.7.1 verwenden. Wenn Sie nicht sicher sind, welche Version Sie verwenden, können Sie die Versionsinformationen im Dialogfeld "Info" finden.

Wir entschuldigen uns für die durch diese Updates verursachten Unannehmlichkeiten und möchten die Ereignisse erläutern und die Schritte, die wir unternehmen, um sicherzustellen, dass Sie eine großartige Erfahrung mit VS Code haben.

Automatische Typen-Akquisition

In VS Code 1.7 haben wir ein Feature namens "Automatische Typen-Akquisition" (ATA) veröffentlicht. Der Zweck von ATA ist die Verbesserung der JavaScript-IntelliSense-Erfahrung.

VS Code verwendet den TypeScript-Sprachdienst, um IntelliSense für JavaScript bereitzustellen. Der TypeScript-Sprachdienst verwendet spezielle Dateien, die als Typdeklarationsdateien (auch als Typings-Dateien bezeichnet) bekannt sind und auf npm unter dem @types-Scope veröffentlicht werden. In der Vergangenheit mussten Sie Typdeklarationsdateien manuell installieren, um IntelliSense für die Abhängigkeiten in package.json zu aktivieren. Wir wissen, dass dies keine leichte Aufgabe ist, daher haben wir uns mit dem TypeScript-Team zusammengetan, um ATA zu entwickeln.

Ein TypeScript-Sprachdienst mit aktiviertem ATA überwacht Ihre package.json-Dateien und installiert automatisch die Typdeklarationsdateien aller Abhängigkeiten in einem Cache auf Ihrem Dateisystem. Er tut dasselbe, wenn er Verweise auf bekannte clientseitige Bibliotheken findet.

Nachdem wir dieses Feature zwei Wochen lang in Insiders-Builds aktiviert hatten, waren wir der Meinung, dass es für die Benutzer nützlich war, und beschlossen, ATA in VS Code 1.7 für alle zu veröffentlichen.

Was ist passiert?

2. November ca. 13:57 Uhr PST Wir haben VS Code 1.7 veröffentlicht. Das Team in Zürich ging schlafen und das Redmond-Team begann mit unseren Plänen für 1.8.

2. November ca. 16:12 Uhr PST Wir wurden von npm kontaktiert. Sie sahen einen enormen Anstieg der Registrierungsaktivität von Clients, die versuchten, auf nicht existierende Pakete unter dem @types-Scope zuzugreifen. Auf dem Höhepunkt machten diese Anfragen etwa 10% des gesamten Datenverkehrs aus (Fun Fact: VS Code-Benutzer sendeten ungefähr die gleiche Menge an Anfragen, die npm aus Indien erhält) und überlasteten kurzzeitig deren Dienst.

Das npm-DevOps-Team handelte schnell, um die unbeabsichtigte DDoS zu mildern und diagnostizierte das Problem als aus dem VS Code 1.7-Release stammend. Das Hauptproblem war eine Flut von Anfragen für nicht existierende Pakete, verursacht durch den folgenden Algorithmus:

  1. Der TypeScript-Sprachserver prüft die in package.json aufgeführten Module gegen seinen Anwendungscache.
  2. Für jedes Modul, das nicht im Anwendungscache vorhanden ist, sendet der TypeScript-Sprachserver eine Anfrage an npm, die @types/{modul} anfordert.
  3. Module, die existieren, werden dem Anwendungscache hinzugefügt.
  4. Da erwartet wird, dass neue Typdeklarationsdateien zum @types-Scope hinzugefügt werden, werden Module, die nicht existieren, jedes Mal angefordert, wenn ein Projekt oder Ordner geöffnet wird, was dazu führt, dass npm mit einer 404 antwortet.

Angesichts der Anzahl von Modulen, die nicht unter dem @types-Scope existieren, beeinträchtigte eine große Menge an 404er-Fehlern kurzzeitig die Verfügbarkeit von npm.

2. November ca. 17:45 Uhr PST Mit dem richtigen Kontext und auf Anfrage von npm haben wir das Release 1.7 heruntergenommen und Benutzer auf VS Code 1.6.1 zurückgesetzt. Wir haben die Website mit den uns vorliegenden Fakten aktualisiert und uns daran gemacht, die besten nächsten Schritte zu analysieren.

Weiterführend

Sie sollten aufgefordert worden sein, VS Code 1.7.1 zu installieren. Dieses Release hat ATA deaktiviert, jedoch sind alle anderen 1.7-Features zur Nutzung verfügbar. In den nächsten Tagen werden wir mit dem TypeScript-Team an einer zufriedenstellenden Lösung für ATA arbeiten (eine wurde gestern Abend in diesem PR begonnen) und wir werden Sie benachrichtigen, wenn dieses Update verfügbar ist.

#HappyCoding

Wade Anderson, VS Code Teammitglied
@waderyan_

© . This site is unofficial and not affiliated with Microsoft.