Transient failures in GitHub name resolver API can result in empty sync notification groups
- Dominant language
- C#
- Stars
- 135
- Forks
- 260
- Avg merge
- 3d 1h
- Merged PRs (30d)
- 143
Description
When translating from GitHub aliases to Microsoft aliases, a failure in the translation API means that we don't have a full list of names to synchronize. In that case, those names not resolved (because of the transient failure) are REMOVED from the group.
For example:
Before notification-configurator execution:
Sync Group A members:
* Person 1 (msft alias: p1, gh alias: ghp1)
* Person 2 (msft alias: p2, gh alias: ghp2)
* Person 3 (msft alias: p3, gh alias: ghp3)
During notification-configurator execution a failure is encountered when searching for the Microsoft Alias for "Person 3". The resulting synchronization would be:
Sync Group A members:
* Person 1 (msft alias: p1, gh alias: ghp1)
* Person 2 (msft alias: p2, gh alias: ghp2)
* ~Person 3~ (msft alias: \, gh alias: ghp3) -- Removed from the group
Because no alias resolved for Person 3, Person 3 is removed from the group.
Possible fixes:
* When a transient error is encountered resolving aliases retry a few times and if all retries fail throw a fatal error and stop synchronizing. This will prevent data loss.
* When a transient error is encountered resolving aliases, note that an alias could not be resolved and DO NOT REMOVE that alias during synchronization (other aliases can be added) ... This adds a lot of complexity but doesn't provide much benefit because the nature of transient errors is frequently difficult to understand by deterministic means at the time the error is encountered. The first option is better because the solution for transient failures is generally to retry once the system on which we depend is operating normally.
Once the alias resolving API is operational again, re-running the notification-configurator restores any incorrectly deleted entries.
Contributor guide
Assessment
This issue has not been assessed yet.