Accueil / Destiny 2 / DESTINY 2 : Bungie revient en détail sur les causes des 2 rollback

DESTINY 2 : Bungie revient en détail sur les causes des 2 rollback

Destiny 2 panne rollback

Retour sur les deux grosses pannes de Destiny 2 qui ont entraîné la perte de ressources.

A lire aussi – Destiny 2 : Un système d’armure plus modulable avec la saison 10

Bungie a publié aujourd’hui un long rapport sur les 2 pannes qui ont entraîné des pertes de ressources pour les joueurs de Destiny 2. Le studio a pris le temps d’exposer la chronologie des faits pour bien comprendre l’enchaînement des événements qui ont abouti à 2 rollback en l’espace de deux semaines.

Retrouvez ici le message complet de l’équipe de développement, attention il y a un peu de lecture.

Retour sur les 2 pannes de Destiny 2

Bungie

Tôt dans la journée du mardi 11 février, après le lancement du correctif 2.7.1.1, nous avons été informés de la réémergence d’un problème qui faisait perdre de la monnaie et des matériaux à un petit pourcentage de joueurs. Ce problème s’était présenté pour la première fois le 28 janvier lors du lancement du correctif 2.7.1, et avait fait perdre de la monnaie et des matériaux à tous les joueurs, ce qui avait entraîné un retour en arrière des comptes de joueur. Nous avons pris une décision similaire pour ce nouvel incident et avons remis les comptes tels qu’ils étaient à 17 h 30, avant le lancement du correctif.

Comme ces deux incidents ont les mêmes causes et les mêmes effets sur les joueurs, et qu’ils se sont déroulés sur une période très courte, nous avons voulu vous donner un aperçu du problème, de la manière dont nous l’avons résolu et de nos efforts afin qu’il ne se reproduise plus. Tout d’abord, commençons par la cause du problème : un bug du jeu impliquant la gestion de l’inventaire et une série de configurations de serveur qui ont réintroduit le bug après sa correction.

GESTION DE L’INVENTAIRE

Dans Destiny 2, les quêtes sont traitées comme des objets d’inventaire, à l’instar de la monnaie et des matériaux. Tous les objets sont horodatés, en fonction du moment où ils ont été ajoutés pour la première fois à l’inventaire du joueur. Cet horodatage permet de trier les quêtes dans l’ordre d’acquisition. Le jeu nettoie l’inventaire à chaque connexion, afin de s’assurer qu’il est conforme à toute modification de contenu, comme le nombre maximum d’objets d’un certain type qu’un joueur peut porter.

Il y a plusieurs mois, les joueurs ont signalé que le journal de quête ne fonctionnait pas correctement et nous avons voulu régler cela. Notre équipe a cherché d’où venait le problème et a découvert que la phase de nettoyage réinitialisait l’horodatage d’un sous-ensemble précis de quête, ce qui perturbait le tri chronologique. Nous avons décidé de régler cela en désactivant la réinitialisation de l’horodatage pour les quêtes. Cette correction était raisonnable conceptuellement, mais elle avait de subtils effets annexes qui entraînaient une large désactivation du processus de nettoyage. Il en résultait que le jeu calculait mal la quantité maximale d’objets cumulés (comme les monnaies et les matériaux), ce qui engendrait la perte de ceux jugés en trop. Nous savions que ce code était primordial et, comme nous le faisons généralement, nous avons demandé à deux experts du domaine de vérifier le code modifié. Malheureusement, nous n’avons pas repéré le bug.

Quelques jours plus tard, nos équipes de test interne ont découvert le problème. Cependant, nous avons conclu à tort qu’il était causé par une erreur d’outillage dans les processus de debug utilisés pour le test, et pas par un véritable bug du jeu. Ayant esquivé tous nos efforts, le problème s’est répandu avec le correctif 2.7.1. Une fois que le bug a été repéré dans le jeu, l’étape suivante consistait à trouver un moyen de le régler, ce qui nous a menés à une autre discussion : les serveurs du jeu et leurs configurations.

CONFIGURATIONS DES SERVEURS

Avant chaque sortie majeure, comme le Bastion des Ombres par exemple, nous procédons à des stress tests exhaustifs afin de simuler le comportement des utilisateurs et leur impact sur notre architecture de services. Comme il est impossible de simuler le comportement de millions de joueurs véritables, nous avons complété ce test en surveillant de près les données de service après le lancement.

En octobre, afin de gérer la charge de processeur et de joueur supplémentaire due au lancement du Bastion des Ombres, nous avons ajouté de nouveaux serveurs (appelés ici « serveurs mondiaux »), bien plus que nous ne l’avions jamais fait. Cette quantité accrue de serveurs a entraîné de petits effets secondaires que nous suivions, mais qui étaient généralement invisibles pour les joueurs. Par exemple, l’un des problèmes était qu’un petit pourcentage de serveurs (moins de 1 %) plantaient au démarrage parce que la quantité de serveurs surchargeait l’une des bases de données de soutien. Nous réglions cela en relançant manuellement les serveurs plantés chaque fois que nous détections le problème, et cela n’entraînait aucun effet visible pour les joueurs.

Avançons dans le temps jusqu’à il y a deux semaines. La mise à jour 2.7.1 contenait le bug mentionné plus haut, qui a provoqué la corruption des données et a entraîné notre tout premier retour en arrière des données de personnage. Afin de régler rapidement ce problème, nous avons mis à jour les serveurs au lieu de tenter de déployer une toute nouvelle version du code du jeu. Cela impliquait de modifier un paramètre de serveur afin qu’il outrepasse le code du jeu utilisé pour traiter les données de personnage et de relancer les serveurs mondiaux pour généraliser cette modification.

Revenons maintenant au 11 février. Nous avons mis en ligne la mise à jour 2.7.1.1 correspondant au lancement des Jours Garance. Après le lancement, certains des serveurs mondiaux ont à nouveau planté au lancement à cause du volume important de serveurs démarrant en même temps. Une fois de plus, nous avons relancé à la main ces serveurs, pensant que tout fonctionnait correctement. Nous avions tort.

Sans que nous le sachions, ce plantage empêchait les serveurs mondiaux d’appliquer le correctif de corruption des données de personnage. Cela signifiait qu’un petit pourcentage des serveurs mondiaux utilisaient l’ancien code et que le bug corrompait des données de personnage. Nous avons évidemment des systèmes de vérification qui détectent ces erreurs de configurations, mais les plantages et redémarrages manuels des serveurs mondiaux passaient ce processus de vérification. Jusqu’à présent, nous pensions cela impossible.

Chaque fois que nous lançons une nouvelle version, nos équipes de test se connectent avec un certain nombre de comptes de test afin de simuler l’expérience des joueurs. Mais comme nous avons des centaines de serveurs, tous les tests effectués ont eu la (mal)chance de tomber sur de « bons » serveurs, et ils ont tous raté le petit pourcentage de serveurs ne fonctionnant pas correctement. Alors nous avons donné notre feu vert.

Dès la remise à disposition du jeu après le déploiement du correctif 2.7.1.1, nous avons commencé à découvrir des joueurs signalant des pertes de monnaie. L’équipe a immédiatement mené l’enquête et a passé le jeu en maintenance à 19 h 30. À ce moment-là, des centaines de milliers de joueurs uniques s’étaient connectés au jeu ou avaient accédé à leurs personnages via un service tiers. Notre enquête a mené à une situation que nous pensions impossible : un petit nombre de serveurs mondiaux s’étaient lancés sans la configuration correcte qui résolvait les problèmes de corruption de la version 2.7.1. Malheureusement, tous les accès à des personnages via ces serveurs obsolètes avaient entraîné le problème de corruption.

Lorsque nous avons déterminé qu’il s’agissait du même problème que celui s’étant produit le 28 janvier et que nous avons compris comment il était réapparu, l’équipe a décidé de la meilleure chose à faire : au lieu de tenter d’identifier tous les comptes affectés et de prendre le risque d’en oublier au passage, mieux valait restaurer toutes les données de personnage à partir de la sauvegarde qui avait été faite juste avant la sortie du correctif 2.7.1.1.

MESURES PRÉVENTIVES

L’équipe a identifié un certain nombre de garde-fous supplémentaires qui devraient empêcher la réapparition de ce problème à l’avenir.

  1. Nous avons ajouté de nouveaux garde-fous à notre processus de mise à jour « à chaud » des serveurs afin de nous assurer qu’ils ne peuvent pas démarrer avec une version incorrecte. Cette modification est d’ores et déjà en place.
  2. Nous avons résolu le problème qui engendrait le plantage au démarrage d’un petit nombre de serveurs mondiaux. Ce correctif sera déployé avec la saison 10.
  3. Le correctif permanent concernant la corruption des personnages sera introduit dans la prochaine mise à jour en tant que changement exécutable, ce qui ôtera la nécessité d’outrepasser la configuration. (Malheureusement, le correctif 2.7.1.1 était trop avancé pour en bénéficier.)
  4. Nous cherchons d’ores et déjà un moyen d’accélérer les retours en arrière et les mécanismes de récupération.
  5. Lors d’une prochaine sortie, nous réglerons le problème qui peut permettre aux serveurs de passer le chargement des données de configuration.
  6. Nous ajouterons également de nouvelles protections du code du nettoyage s’opérant à la connexion du compte, afin d’empêcher de futurs bugs de survenir à ce moment critique.
  7. Nous mettons à jour nos méthodologies de développement afin de découvrir de tels problèmes plus tôt dans le calendrier de sortie.

Avec ce retour en arrière, tous les comptes de personnage retrouveront l’état qu’ils avaient autour de 17 h 30. L’équipe travaille d’arrache-pied pour préparer le correctif 2.7.1.2, dont la sortie est prévue le 13 février. Veuillez noter que ce correctif inclura également une correction pour le problème de la Lame de l’aube infinie.

Toute l’actu du jeu sur notre section Destiny 2 et notre page facebook 100% Destiny :

Destiny ban Next stage

  • Twitter@NextStage_blog
  • Facebookfacebook.com/Nextstage.fr
  • Tipeee : Soutenir Next Stage avec un don 

A propos de Djin

Lorsque le Djin des cavernes n’est pas en train de s’énerver sur Destiny, vous pouvez le trouver sur Reddit, il sort parfois de sa tanière pour décompresser avec le dernier event UFC. (Twitter : @Djin_Nxt)

Regardez aussi

Destiny 2 mise à jour

DESTINY 2 : Tous les détails de la mise à jour 2.9.1

La mise à jour 2.9.1 de Destiny 2 disponible. A lire aussi – Un RPG, des …

error: Alert: Content is protected !!