[EN/FR] GitHub Classroom incident report 28 February 2018 | Rapport d'incident 28 Février 2018


(Kassandre Pedro) #1

Unsuccessful attempts to accept assignments

On 15 February students weren’t able to accept assignments. Upon clicking the invitation link for the assignment, students saw the following error:

We were not able to add you to the assignment as a collaborator. Please try again.

We have resolved the issue. Here’s an explanation of what happened:

GitHub Classroom is built upon the GitHub API. Recent updates to the Repository Collaborators API feature caused some unexpected behavior in accepting assignments.

Starting with the recent update, if a student was an organization member, the API would add them to the repository instead of sending an invitation to be a collaborator.

Then invitations in Classroom would throw an error, because if you’re an organization member, you don’t need the invitation to collaborate on the repository.

We fixed the GitHub API and deployed the fix to Classroom with this issue:

Permissions roles and HTTP statuses

Periodically the GitHub API is updated, and that can cause the kind of errors students were seeing last week.

Part of the bug had to do with the fact that Classroom received the same HTTP status or member students and collaborator students.

If the students were members of the repository, instead of returning the content associated with the assignment (the invitation hash) Classroom sent a link associated with that user (the user identification hash). This returned a 404 error.

In Classroom, students become members of an organization either through manually changing permissions, or through joining a group assignment.

With this fix, student members are served one HTTP status (204) and another if students are invited as collaborators (201). They are served the right hash, the right link, and the right content for their course no matter their role in the organization.

Thank you for your patience.

Échecs lors de l’acceptation d’un assignment

Le 15 février, de nombreux étudiants ne pouvaient pas accepter leurs assignments. Ils obtenaient l’erreur suivante après avoir cliqué sur le lien d’invitation:

We were not able to add you to the assignment as a collaborator. Please try again.

Le problème est à présent résolu. Voici une explication de ce qui s’est passé:

GitHub Classroom est basé sur l’API de GitHub. De récentes modifications sur une des feature de l’API (Repository Collaborators API) a causé plusieurs comportements inexpliqués.

Avec la dernière mis à jour, si un étudiant était un membre de l’organisation alors l’API l’ajoutait au repository au lieu d’envoyer une invitation pour l’ajouter en tant que collaborateur.

Les invitations de Classroom renvoyaient une erreur puisque si un étudiant est un membre de l’organisation il n’a pas besoin d’invitations pour avoir accès au repository.

L’API GitHub a été fixé et nous avons déployé un fix sur Classroom:

Permissions et codes HTTP

Régulièrement, l’API GitHub est mise à jour et cela peut engendrer le genre d’erreurs que les étudiants ont eu la semaine dernière.

Une partie du bug était dû au fait que Classroom recevait le même code HTTP pour les étudiants membres et ceux qui étaient collaborateurs.

Si les étudiants étaient membres du repo, au lieu de retourner le contenu associé à l’assignment (le hash de l’invitation) Classroom envoyait un lien associé à l’utilisateur (le hash d’authentification). Ce qui retournait une erreur 404.

Sur Classroom, les étudiants deviennent membres d’une organisation soit par une modification manuelle des permissions, ou en rejoignant un assignment de groupe.

Avec ce fix, un code HTTP (204) est envoyé aux étudiants membres et un code HTTP (201) leur est envoyé si les étudiants sont invités en tant que collaborateurs. Le bon hash, le bon lien et le bon contenu pour le cours leur sont à présent envoyés peu importe leur rôle dans l’organisation.

Merci pour votre patience.


(Eric Boivin) #2

Merci Kassandre! :metal:


(Casiano Rodriguez-Leon) #3

Many thanks!!

We suffered the same issue. Glad to hear it is fixed!