Skip to content
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

Reduce and simplify error reporting service buckets #128

Merged
merged 6 commits into from
Apr 28, 2020

Conversation

rcebulko
Copy link
Contributor

@rcebulko rcebulko commented Apr 28, 2020

Bucket names now take the form
(CDN|Origin) (Development|Production|Nightly|Experiments|Inabox-(Control|Experiment)-[ABC])

Expected errors get (Expected) appended to the bucket name. This allows the most common use cases to see errors grouped by the release type. More nuanced investigations, such as 1p/3p and single-pass/multi-pass/ESM can still be performed across individual service buckets, or across all of them, but using the regular filter field (ie. filtering by 3p=1 or esm=1 or spt=mp), without splitting up the main buckets any further

Part of #112

@@ -27,6 +27,25 @@ const CDN_REGEX = new RegExp(
'\\.ampproject\\.net/',
'i'
);
const CHANNEL_TYPES = {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I notice these are mostly the same as

const RELEASE_CHANNELS = {
'00': 'Experimental',
'01': 'Stable',
'02': 'Control',
'03': 'Beta',
'04': 'Nightly',
'05': 'Nightly-Control',
'10': 'Experiment-A',
'11': 'Experiment-B',
'12': 'Experiment-C',
'20': 'Inabox-Control-A',
'21': 'Inabox-Experiment-A',
'22': 'Inabox-Control-B',
'23': 'Inabox-Experiment-B',
'24': 'Inabox-Control-C',
'25': 'Inabox-Experiment-C',
};
, with a few duplicate names and changed names.

Could we just reuse the same mapping? I would actually prefer to not mix Canary and RC, since we test really experimental features in Canary.

Copy link
Contributor Author

@rcebulko rcebulko Apr 28, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I imagine your concern is being able to detect errors in Experimental features, and separate them out from the errors in Beta. With this grouping, that won't be a problem. My thinking around this is that the version names will already differentiate between Beta/Experimental. A single channel (ie. Experimental) can also be viewed using the built-in filtering mechanisms.

My reasoning for not wanting to use the same mapping is twofold

  1. It becomes redundant, as each service bucket will contain only the release matching its channel (with the exception of opt-in and percentage, which would be identical); this means we'd still have the giant list of services. Since older RTVs quickly drop off the list, that makes each service bucket contain only one or two versions, and we lose the benefit that service grouping provides.
  2. By grouping in this way, each service represents a specific commit in the code. Everything in Production is running from the same point, but with different configs; likewise for Development, Nightly, etc. The version dropdown then provides further refinement. By grouping Stable+Control, or Beta+Experimental, I think we'll get better signal from both, while maintaining the same ability to narrow down the list as desired.

WDYT?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My thinking around this is that the version names will already differentiate between Beta/Experimental. A single channel (ie. Experimental) can also be viewed using the built-in filtering mechanisms.

Excellent, this was my concern.

It becomes redundant, as each service bucket will contain only the release matching its channel (with the exception of opt-in and percentage, which would be identical); this means we'd still have the giant list of services.

Is this level of detail even needed for the service name? Perhaps we should just group by CDN and Prodness, and use the version level filtering?

If we do stick with this list, lets extract it and the one from human-rtv.js into a common file.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done, and then collected the various RTV utils into one folder.

utils/log-target.js Outdated Show resolved Hide resolved
utils/log-target.js Outdated Show resolved Hide resolved
@@ -27,6 +27,25 @@ const CDN_REGEX = new RegExp(
'\\.ampproject\\.net/',
'i'
);
const CHANNEL_TYPES = {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My thinking around this is that the version names will already differentiate between Beta/Experimental. A single channel (ie. Experimental) can also be viewed using the built-in filtering mechanisms.

Excellent, this was my concern.

It becomes redundant, as each service bucket will contain only the release matching its channel (with the exception of opt-in and percentage, which would be identical); this means we'd still have the giant list of services.

Is this level of detail even needed for the service name? Perhaps we should just group by CDN and Prodness, and use the version level filtering?

If we do stick with this list, lets extract it and the one from human-rtv.js into a common file.

@rcebulko rcebulko merged commit b9b1d43 into ampproject:master Apr 28, 2020
@rcebulko rcebulko deleted the bucket branch April 28, 2020 19:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants