-
Notifications
You must be signed in to change notification settings - Fork 41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Task]: Track the length of time an add-on is in the review queue #15174
Comments
Once #15072 is implemented we should be very close to having that already by looking at when the first The only reason this doesn't work right now is that we mass-update multiple NHR at once when a review is done, so The query would need to take into account the following things:
|
Also specifically for DSA-related reasons, those are separate, so an add-on can be reviewed while leaving it in the queue because of those reasons |
Andreas suggested we could emit an activity log when a version first gets a NHR, then another one when the last NHR is removed (referencing that first one). That would measure how long a version stayed in the queue. |
This metric should measure the time it takes between an add-on being flagged for human review and it actually having a review decision made. |
Each time a version gets added to the queue for any reason (gets a due date when it didn't already have one), we'll add one entry to The difference between Because add-ons can be in the queue for multiple reasons, and some of these reasons are not cleared for all actions, fields get updated independently. I see 2 edge cases inherent to my approach, all to do with a version leaving the queue because of a developer action but then getting reviewed later: 1) Version getting back in the queue after being disabled by developer
In that scenario, we'll have 2 records and both will be considered as being the result of a reviewer action. They will have the correct exit date though:
2) Version getting reviewed despite no longer being in the queue
In that scenario, we'll have one record and it will be considered as being the result of a reviewer action, but at the date it first left the queue:
I think both cases are OK considering the |
To help QA/testing I'm adding a Testing should involve having an add-on enter the queue (either flagged for review after being signed or waiting for a human approval because it has auto-approved disabled) and then:
Repeat to test each case, and try to mix and match if you want to find any edge cases I haven't thought about. |
For scenario 1, you said
Why are both considered the result of a reviewer action? Shouldn't the first one be the result of a developer action (version disabled)? For scenario 2 and friends (any time an add-on gets reviewed that isn't in the queues), can we avoid attributing it to a former entry in the queue? I assume an add-on being in the queue due to multiple abuse report categories (or at least one category and e.g. not auto-approved), and a reviewer just either resolving one abuse report category or reviewing the version without resolving the abuse reports will not make the add-on leave the queue and thus will not be recorded this way? |
Both are side effects of the way I have it implemented right now. It makes it easier to handle a version flagged for different reasons that stays in the queue because only part of those reasons are resolved by the reviewer action (see below).
The way it works in my patch is that So if reviewing the add-on without resolving the abuse reports, Note that all of this is per version (not add-on). |
If a developer action makes the add-on/version exit the queue, If an add-on/version is reviewed, but not in the queue,
This is problematic and we probably need to find a way to solve that (cc @abyrne-moz). Resolving an abuse report is a decision as well (and comes with a reviewer action). |
That's what my patch does. Except when both those scenarios are combined, and something is reviewed, it will set the
If the add-on is only in the queue for an abuse report, and that is resolved, then the |
I understand, but the numbers need to be accurate, as we might also use them to measure reviewer performance. |
If you exclude the edge cases highlighted above the numbers should be accurate when looking from the perspective of the queue, which was the goal. Notably, if a version is in the queue for 2 different reasons but only one of those is resolved (as would be the case if unresolved abuse reports are one of the reasons) then the |
What I have implemented works for measuring the length of time a version stays in the queue, and we can build aggregates based on that as requested in the issue description. It can be used to measure individual reviewer performance, but that was not in scope, so it's a bonus, and it comes with the edge cases mentioned. If you're not happy with those edge cases it would have to be a follow-up, as it's going to clash with the fact that a version can be in the queue for multiple reasons that are not resolved at the same time. Addressing that would mean either:
|
I believe this was what we decided at some point. Did it get intentionally dropped, or just lost along the way?
We could also do that and that might be the most elegant solution. However, as you said, it requires to find the right NHR. Do we know which one to pick if there are multiple? |
I tried this mainly on AMO dev and I can see it's working with extensions entering the manual review queue for various reasons and applies for all themes which do not have automatic approval. I had to make some notes from which I'll try to extract what's problematic maybe.
entry https://addons-internal.dev.mozaws.net/en-US/admin/models/reviewers/reviewqueuehistory/6/change/ Similarly when a block is made on the first version and then the one flagged for HR Entries in reviewqueuehistory would register an exit_date when the first version was blocked/rejected and the review_decision when the other version (which was flagged for HR) is moderated.
|
That's an interesting one, bit of a weird edge case. Need to dig a bit more, not sure what we're expecting to happen here since confirming auto-approval clears NHR on all versions...
Same kind of issue: generally most actions in the listed channel (not unlisted) clear NHR for all other versions so it could cause them to be dropped from the queue entirely... That's not new, but maybe there is something to look into.
Ah, that I think is wrong actually. I think we should only record the human actions... unless somehow an automated action takes something out of the queue.
Known edge case I think we can live with for now as commented above.
If it's not in the queue that's expected.
They could if it had been signed. Here that's not the case, so that's expected.
Similar: if the version hasn't been signed yet, then it's no longer in the queue, but wasn't a reviewer action, we're correctly setting an exit date but no review decision (if it gets re-enabled an a review decision is made, we'll land in the same known edge case described above). |
Go ahead and file a follow-up for the recording of the auto-approval decision. We should only record human reviewer decisions. |
That's another interesting edge case. Force enable (and only force enable, force disable should work) activity is not tied to one or more versions, it's tied to the add-on itself, despite clearing NHR for all versions as a side-effect. So we don't find which versions to consider updating the history of. You can also file a follow-up for that, maybe we'll have to add a workaround for that scenario. |
Description
Measure on a per review basis from when an add-on entered the review queue to a decision being made.
Acceptance Criteria
Milestones/checkpoints
Checks
┆Issue is synchronized with this Jira Task
The text was updated successfully, but these errors were encountered: