Bug 1438896 : Added a probe to count Telemetry failures by ping type. , r?=chutten
MozReview-Commit-ID: 9hAhxfy5lZ4
--- a/toolkit/components/telemetry/Histograms.json
+++ b/toolkit/components/telemetry/Histograms.json
@@ -7108,16 +7108,36 @@
"eRedirect",
"abort",
"timeout",
"eTooLate",
"eTerminated"
],
"description": "Counts of the different ways sending a Telemetry ping can fail."
},
+ "TELEMETRY_SEND_FAILURE_TYPE_PER_PING" : {
+ "record_in_processes": ["main"],
+ "alert_emails": ["telemetry-client-dev@mozilla.com", "chutten@mozilla.com"],
+ "bug_numbers": [1438896],
+ "expires_in_version": "66",
+ "kind": "categorical",
+ "keyed": true,
+ "labels": [
+ "eOK",
+ "eRequest",
+ "eUnreachable",
+ "eChannelOpen",
+ "eRedirect",
+ "abort",
+ "timeout",
+ "eTooLate",
+ "eTerminated"
+ ],
+ "description": "Counts the number of times a failure occures while sending a Telemetry ping. It is a keyed histogram where the type of ping will serve as the key and may include the following ping types : {common, main, deletion, crash, sync, new-profile, core, modules, environment, health, heartbeat, malware-addon-states, activation, saved-session, backgroundhangmonitor, first-shutdown, anonymous, uitour-tag}."
+ },
"TELEMETRY_STRINGIFY" : {
"record_in_processes": ["main"],
"alert_emails": ["telemetry-client-dev@mozilla.com"],
"expires_in_version": "never",
"kind": "exponential",
"high": 3000,
"n_buckets": 10,
"description": "Time to stringify telemetry object (ms)"
--- a/toolkit/components/telemetry/TelemetrySend.jsm
+++ b/toolkit/components/telemetry/TelemetrySend.jsm
@@ -1103,16 +1103,17 @@ var TelemetrySendImpl = {
this._log.trace("_doPing - Can't send ping " + ping.id);
return Promise.resolve();
}
if (this._tooLateToSend) {
// Too late to send now. Reject so we pend the ping to send it next time.
this._log.trace("_doPing - Too late to send ping " + ping.id);
Telemetry.getHistogramById("TELEMETRY_SEND_FAILURE_TYPE").add("eTooLate");
+ Telemetry.getKeyedHistogramById("TELEMETRY_SEND_FAILURE_TYPE_PER_PING").add(ping.type, "eTooLate");
return Promise.reject();
}
this._log.trace("_doPing - server: " + this._server + ", persisted: " + isPersisted +
", id: " + id);
const url = this._buildSubmissionURL(ping);
@@ -1159,16 +1160,17 @@ var TelemetrySendImpl = {
let errorhandler = (event) => {
let failure = event.type;
if (failure === "error") {
failure = XHR_ERROR_TYPE[request.errorCode];
}
TelemetryHealthPing.recordSendFailure(failure);
Telemetry.getHistogramById("TELEMETRY_SEND_FAILURE_TYPE").add(failure);
+ Telemetry.getKeyedHistogramById("TELEMETRY_SEND_FAILURE_TYPE_PER_PING").add(ping.type, failure);
this._log.error("_doPing - error making request to " + url + ": " + failure);
onRequestFinished(false, event);
};
request.onerror = errorhandler;
request.ontimeout = errorhandler;
request.onabort = errorhandler;