Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
x/build/maintner: reports inconsistent world state (e.g., issue state vs issue events) during short windows of time #28226
A program that fetches a
The most visible high-level example of this is #21312.
This happens because there are effectively two GitHub data sources that are not synchronized:
To give a concrete example of an inconsistent state that
The mutation reporting that there has been an unlabeled event on the same issue may come in a few seconds later. Until it does, it will appear that the issue does not have said label and it has never been unlabeled (e.g.,
These are two distinct mutations received and processed by
There is more relevant information in #21312 (comment).
When working on other issues, I saw that GitHub introduced a "unified" timeline for events on an issue, the Timeline Api. I understand that it is still in beta (since 2016) and would be a major, but it might help fix this issue by providing a single source of truth on a GitHubIssue
Something to be mindful of is that it may not, on its own, be enough to solve the most important race: between the issue state (whether it's open or closed, which labels it has applied) and events. Unless we use the events to deduct the state, rather than querying state separately. (But that can be done independently of using the Timeline API.)
Also, for information, the Timeline API is indeed in preview, and in my experience using it, it had some data gap edge cases where I had to fall back to querying reviews separately (e.g., see here). It may have been resolved by now, but it's worth being aware of. It seems there are 2 Timeline APIs in GitHub API v4 (
It’s not just short windows of time. There are some issues that have events missing within the maintner corpus. This makes it impossible to create an accurate milestone burndown chart where you want to query for the state of an issue at a particular time window. (/cc @griesemer).
A few examples of issues in maintner that have incomplete event lists:
It does not record the final “closed” event: https://api.github.com/repos/golang/go/issues/28559/events
The above event log is missing a few milestone-related events: https://api.github.com/repos/golang/go/issues/28306/events
@andybons That sounds like a valid issue that is related, but not the same as this one. I see these two issues:
Mind opening a separate issue for it? The reason I suggest that is because I expect the fix for one will not resolve the other, and vice versa. Thanks!