Closed
Bug 1137447
Opened 8 years ago
Closed 8 years ago
New app update telemetry for patch type (complete or partial), extended error codes, etc.
Categories
(Toolkit :: Application Update, defect)
Tracking
()
RESOLVED
FIXED
mozilla39
Tracking | Status | |
---|---|---|
firefox39 | --- | fixed |
People
(Reporter: robert.strong.bugs, Assigned: robert.strong.bugs)
References
(Blocks 1 open bug)
Details
Attachments
(1 file, 4 obsolete files)
229.05 KB,
patch
|
robert.strong.bugs
:
review+
|
Details | Diff | Splinter Review |
We have most of what bug 1121018 removes. I believe all that is needed is patch type (complete or partial) and at the same time I want to add more telemetry for the ui.
![]() |
Assignee | |
Updated•8 years ago
|
![]() |
Assignee | |
Updated•8 years ago
|
Summary: New app update telemetry for patch complete and partial and ui → New app update telemetry for patch type (complete or partial) and ui
![]() |
Assignee | |
Comment 1•8 years ago
|
||
The update check ping will also be sent by UI's and I'll add that later. To keep history from older clients I have changed the code for results that have been broken out into more specific codes. I'll submit a download result code ping next.
Assignee: nobody → robert.strong.bugs
Attachment #8570331 -
Flags: review?(spohl.mozilla.bugs)
![]() |
Assignee | |
Comment 2•8 years ago
|
||
Comment on attachment 8570331 [details] [diff] [review] 1. patch - check telemetry ping typo :(
Attachment #8570331 -
Attachment is obsolete: true
Attachment #8570331 -
Flags: review?(spohl.mozilla.bugs)
![]() |
Assignee | |
Comment 3•8 years ago
|
||
I combined the patch to remove the no update found from the check ping and instead send that as a boolean for no update found vs. update found.
Attachment #8570342 -
Flags: review?(spohl.mozilla.bugs)
![]() |
Assignee | |
Comment 4•8 years ago
|
||
Fixed some naming
Attachment #8570342 -
Attachment is obsolete: true
Attachment #8570342 -
Flags: review?(spohl.mozilla.bugs)
Attachment #8570354 -
Flags: review?(spohl.mozilla.bugs)
![]() |
Assignee | |
Comment 5•8 years ago
|
||
Comment on attachment 8570354 [details] [diff] [review] 1. patch - check telemetry ping Going to hold off on requesting review until after bug 1136358 finishes review
Attachment #8570354 -
Flags: review?(spohl.mozilla.bugs)
![]() |
Assignee | |
Updated•8 years ago
|
Summary: New app update telemetry for patch type (complete or partial) and ui → New app update telemetry for patch type (complete or partial), ui, extended error codes, etc.
![]() |
Assignee | |
Updated•8 years ago
|
QA Contact: robert.strong.bugs
![]() |
Assignee | |
Comment 6•8 years ago
|
||
In errors.h there have been no reports of the error codes in telemetry that I reused. I went with new telemetry histogram id's since most of the existing histograms changed and this will make it separate the old from the new. Pushed to try https://treeherder.mozilla.org/#/jobs?repo=try&revision=9dbefa5cdcd4
Attachment #8570354 -
Attachment is obsolete: true
Attachment #8584439 -
Flags: review?(netzen)
![]() |
Assignee | |
Comment 7•8 years ago
|
||
Note: the patch requires the patch in bug 1121018. I don't know at this time if having check codes for the ui will be valuable and if it is aded I'll do it in another bug.
Summary: New app update telemetry for patch type (complete or partial), ui, extended error codes, etc. → New app update telemetry for patch type (complete or partial), extended error codes, etc.
Comment 8•8 years ago
|
||
Comment on attachment 8584439 [details] [diff] [review] patch rev1 Review of attachment 8584439 [details] [diff] [review]: ----------------------------------------------------------------- ::: toolkit/components/telemetry/Histograms.json @@ -3467,1 @@ > "expires_in_version": "never", Is just removing telemetry constants the right way to obsolete them? I thought it was to set expires_in_version? Will just removing them make them disappear from the dashboard? ::: toolkit/mozapps/update/UpdateTelemetry.jsm @@ +16,5 @@ > + // The update check was performed by the call to notify in nsUpdateService.js. > + NOTIFY: "NOTIFY", > + // The update check was performed by the call to checkForBackgroundUpdates in > + // nsUpdateService.js. > + EXTERNAL: "EXTERNAL", Please add some justification on why these things are tracked differently. Do you expect they will differ? Why is it useful to track them differently? @@ +123,5 @@ > + if (aCode != this.CHK_NO_UPDATE_FOUND) { > + Services.telemetry.getHistogramById(id).add(aCode); > + noUpdateFound = false; > + } > + id = "UPDATE_CHECK_NO_UPDATE_" + aSuffix; Note that because these strings are computed dynamically it makes the grep test fail. Meaning for someone reading the code wanting to find references to UPDATE_CHECK_NO_UPDATE_EXTERNAL it makes it harder for them. Would be nice to have the strings explicitly. Could pass in for example isExternal and then id = isExternal ? "UPDATE_CHECK_NO_UPDATE_EXTERNAL" : "UPDATE_CHECK_NO_UPDATE_NOTIFY". It's not worth changing at this point, but just a thought. ::: toolkit/mozapps/update/nsUpdateService.js @@ +2166,5 @@ > LOG("UpdateService:_postUpdateProcessing - patch found in downloading " + > "state"); > if (update && update.state != STATE_SUCCEEDED) { > // Resume download > +// Possible place where download is stuck? nit: Indentation, maybe expand on what this comment means more. @@ +2640,5 @@ > "update is disabled"); > return; > } > > +#ifdef MOZ_METRO I'd just remove this, Windows 10 is removing support for new style enabled desktop browsers. Making any chance of a revival 0. @@ +4637,2 @@ > if (update.state == STATE_FAILED && > + (WRITE_ERRORS.indexOf(update.errorCode) != -1 || I think the better ES6 way to do this is: (WRITE_ERRORS.includes(update.errorCode) || ::: toolkit/mozapps/update/tests/chrome/test_0105_background_restartNotification_VersionCompatAddons.xul @@ +31,5 @@ > + debugDump("entering"); > + > + Services.prefs.setIntPref(PREF_APP_UPDATE_PROMPTWAITTIME, 1); > + > + let url = URL_HTTP_UPDATE_XML + "?showDetails=1" + Would be helpful but not required to explicitly add a comment in this file here: https://dxr.mozilla.org/mozilla-central/source/toolkit/mozapps/update/tests/chrome/utils.js#154 ...that a URL should not be specified with URL parameters. ::: toolkit/mozapps/update/tests/chrome/utils.js @@ +1144,5 @@ > + aAddon.userDisabled = gDisableNoUpdateAddon; > + } > + } > + > + if (aAddon.name.indexOf("updatecompatibility") == 0) { Unless we're explicitly trying not to use ES6, please change here and elsewhere: if (aAddon.name.startsWith("updatecompatibility") { ::: toolkit/mozapps/update/updater/updater.cpp @@ +487,5 @@ > NS_tdirent *entry; > > dir = NS_topendir(path); > if (!dir) { > + LOG(("ensure_remove_recursive: path is not a directory: " LOG_S \ nit: Here and elsewhere, you don't need the trailing backslash here because of auto string literal concat and whitespace ignored. Only need it for preprocessor definitions of macros.
Attachment #8584439 -
Flags: review?(netzen) → review+
![]() |
Assignee | |
Comment 9•8 years ago
|
||
(In reply to Brian R. Bondy [:bbondy] from comment #8) > Comment on attachment 8584439 [details] [diff] [review] > patch rev1 > > Review of attachment 8584439 [details] [diff] [review]: > ----------------------------------------------------------------- > > ::: toolkit/components/telemetry/Histograms.json > @@ -3467,1 @@ > > "expires_in_version": "never", > > Is just removing telemetry constants the right way to obsolete them? I > thought it was to set expires_in_version? Will just removing them make them > disappear from the dashboard? Yes though getting them removed from the data is likely another story. From the "Adding a new Telemetry probe" page https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Adding_a_new_Telemetry_probe expires_in_version: Required. The version number in which the histogram expires, e.g. "30"; a version number of type "N" and "N.0" is automatically converted to "N.0a1" in order to expire the histogram also in the development channels. A telemetry probe acting on an expired histogram will be considered a non-op. For histograms that never expire the value "never" can be used as in the example above. > ::: toolkit/mozapps/update/UpdateTelemetry.jsm > @@ +16,5 @@ > > + // The update check was performed by the call to notify in nsUpdateService.js. > > + NOTIFY: "NOTIFY", > > + // The update check was performed by the call to checkForBackgroundUpdates in > > + // nsUpdateService.js. > > + EXTERNAL: "EXTERNAL", > > Please add some justification on why these things are tracked differently. > Do you expect they will differ? Why is it useful to track them differently? Will do > @@ +123,5 @@ > > + if (aCode != this.CHK_NO_UPDATE_FOUND) { > > + Services.telemetry.getHistogramById(id).add(aCode); > > + noUpdateFound = false; > > + } > > + id = "UPDATE_CHECK_NO_UPDATE_" + aSuffix; > > Note that because these strings are computed dynamically it makes the grep > test fail. Meaning for someone reading the code wanting to find references > to UPDATE_CHECK_NO_UPDATE_EXTERNAL it makes it harder for them. Would be > nice to have the strings explicitly. Could pass in for example isExternal > and then id = isExternal ? "UPDATE_CHECK_NO_UPDATE_EXTERNAL" : > "UPDATE_CHECK_NO_UPDATE_NOTIFY". It's not worth changing at this point, but > just a thought. I hadn't thought of that and it makes sense > ::: toolkit/mozapps/update/nsUpdateService.js > @@ +2166,5 @@ > > LOG("UpdateService:_postUpdateProcessing - patch found in downloading " + > > "state"); > > if (update && update.state != STATE_SUCCEEDED) { > > // Resume download > > +// Possible place where download is stuck? > > nit: Indentation, maybe expand on what this comment means more. Meant to remove that and look into it later. > @@ +2640,5 @@ > > "update is disabled"); > > return; > > } > > > > +#ifdef MOZ_METRO > > I'd just remove this, Windows 10 is removing support for new style enabled > desktop browsers. Making any chance of a revival 0. Thanks! > @@ +4637,2 @@ > > if (update.state == STATE_FAILED && > > + (WRITE_ERRORS.indexOf(update.errorCode) != -1 || > > I think the better ES6 way to do this is: > > (WRITE_ERRORS.includes(update.errorCode) || It is ES7 ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes ) and there is already a comment in the patch of "// Replace with Array.prototype.includes when it has stabilized." Also, this came up in irc today: [10:37] <Mossop> mconley: JS team are the arbiters of truth [10:37] <mconley> ok, cool [10:38] <mconley> yeah, I was just talking to jorendorff [10:38] <mconley> and he's going to work on a wiki page to lay out what's good to use, and what is not [10:38] <mconley> apparently, all implemented ES6 stuff is OK to use, with the following exceptions: [10:38] <mconley> Classes, Array.prototype.includes, ArrayBuffer.transfer [10:39] <mconley> those are all Nightly-only, and will break on Aurora uplift. > ::: > toolkit/mozapps/update/tests/chrome/ > test_0105_background_restartNotification_VersionCompatAddons.xul > @@ +31,5 @@ > > + debugDump("entering"); > > + > > + Services.prefs.setIntPref(PREF_APP_UPDATE_PROMPTWAITTIME, 1); > > + > > + let url = URL_HTTP_UPDATE_XML + "?showDetails=1" + > > Would be helpful but not required to explicitly add a comment in this file > here: > https://dxr.mozilla.org/mozilla-central/source/toolkit/mozapps/update/tests/ > chrome/utils.js#154 > ...that a URL should not be specified with URL parameters. Not sure what you mean? > ::: toolkit/mozapps/update/tests/chrome/utils.js > @@ +1144,5 @@ > > + aAddon.userDisabled = gDisableNoUpdateAddon; > > + } > > + } > > + > > + if (aAddon.name.indexOf("updatecompatibility") == 0) { > > Unless we're explicitly trying not to use ES6, please change here and > elsewhere: > if (aAddon.name.startsWith("updatecompatibility") { That can be changed now that it has stabilized. Thanks! > ::: toolkit/mozapps/update/updater/updater.cpp > @@ +487,5 @@ > > NS_tdirent *entry; > > > > dir = NS_topendir(path); > > if (!dir) { > > + LOG(("ensure_remove_recursive: path is not a directory: " LOG_S \ > > nit: Here and elsewhere, you don't need the trailing backslash here because > of auto string literal concat and whitespace ignored. Only need it for > preprocessor definitions of macros. Will do
![]() |
Assignee | |
Comment 10•8 years ago
|
||
Pushed to mozilla-inbound https://hg.mozilla.org/integration/mozilla-inbound/rev/5c7b6c34ec5c
Attachment #8584439 -
Attachment is obsolete: true
Attachment #8585109 -
Flags: review+
Comment 11•8 years ago
|
||
https://hg.mozilla.org/mozilla-central/rev/5c7b6c34ec5c
Status: ASSIGNED → RESOLVED
Closed: 8 years ago
status-firefox39:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla39
You need to log in
before you can comment on or make changes to this bug.
Description
•