Closed Bug 1139754 Opened 9 years ago Closed 9 years ago

Remove idle-daily pings

Categories

(Toolkit :: Telemetry, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla40
Tracking Status
firefox40 --- fixed

People

(Reporter: vladan, Assigned: Dexter)

References

Details

(Whiteboard: [ready])

Attachments

(1 file, 5 obsolete files)

idle-daily pings haven't been useful since the first AWS Telemetry backend and they've been superceded by "daily" pings in unified Telemetry
What are the consequences of this for FHR users? Since this isn't a regression, I don't think it needs to block.
Flags: needinfo?(vdjeric)
(In reply to Benjamin Smedberg  [:bsmedberg] from comment #1)
> What are the consequences of this for FHR users? Since this isn't a
> regression, I don't think it needs to block.

There are no consequence to FHR users -- idle-daily wasn't used by anyone. Are you confusing idle-daily with the new "daily" ping?

There's no downside, we just remove an unneeded behavior from Firefox & related tests
Flags: needinfo?(vdjeric)
No, I'm mainly asking about relative priority. We should absolutely remove idle-daily (I thought we already had) but I don't see why this would block uplift.
(In reply to Benjamin Smedberg  [:bsmedberg] from comment #3)
> No, I'm mainly asking about relative priority. We should absolutely remove
> idle-daily (I thought we already had) but I don't see why this would block
> uplift.

I marked it as a blocker because I see it as an easy bit of housekeeping that should have landed together with daily pings
Aside: does that mean I can delete idle-daily submissions from the server data store? If so, I'll file a separate bug to do so.
Flags: needinfo?(vdjeric)
(In reply to Mark Reid [:mreid] from comment #5)
> Aside: does that mean I can delete idle-daily submissions from the server
> data store? If so, I'll file a separate bug to do so.

Yes, but let's not do that until we're confident about the quality of the new pings.. just in case idle-daily ends up being useful for debugging issues (e.g. compare idle-daily rates before & after to determine if we have telemetry initialization or sending bugs in the new telemetry).
Flags: needinfo?(vdjeric)
Blocks: 1142677
Blocks: 1120356
No longer blocks: 1069869
Attached patch bug1139754.patch (obsolete) (deleted) — Splinter Review
This patch removes "idle-daily" pings. I've not killed gather-telemetry, as this will be done by bug 1127907.
Assignee: nobody → alessio.placitelli
Status: NEW → ASSIGNED
Attachment #8583034 - Flags: review?(gfritzsche)
Attachment #8583034 - Flags: review?(gfritzsche) → review+
Whiteboard: [ready]
Can we keep the idle-daily event to check for persisted pings? it's nice to have a fallback in case of an issue with daily ping sends
Flags: needinfo?(alessio.placitelli)
That's a good idea. The "idle-daily" event itself is not being removed by this patch, as "gather-telemetry" still uses it.

Maybe we can file a followup bug and move "idle-daily" handling to TelemetryScheduler (removing it from TelemetrySession after we deal with gather-telemetry)? So that the logic driving telemetry actions is encapsulated within that object?
Flags: needinfo?(alessio.placitelli) → needinfo?(vdjeric)
Attached patch bug1139754.patch - v2 (obsolete) (deleted) — Splinter Review
I erroneously removed test_TelemetryPing_idle.js in the last patch, which wasn't really testing idleDaily pings but rather "gather-telemetry" being correctly notified.

R+ on this as discussed on IRC with :gfritzsche.
Attachment #8583034 - Attachment is obsolete: true
Attachment #8587442 - Flags: review+
This has test failures in test_TelemetryPingBuildID.js:

 0:03.49 LOG: Thread-28 INFO toolkit/components/telemetry/tests/unit/test_TelemetryPingBuildID.js | Starting test_firstRun
 0:03.49 LOG: Thread-28 INFO (xpcshell/head.js) | test test_firstRun pending (2)
 0:03.81 PROCESS_OUTPUT: Thread-28 (pid:4155) Full command: ['/Users/gfritzsche/moz/fxteam/obj/dist/NightlyDebug.app/Contents/MacOS/xpcshell', '-g', '/Users/gfritzsche/moz/fxteam/obj/dist/NightlyDebug.app/Contents/Resources', '-a', '/Users/gfritzsche/moz/fxteam/obj/dist/NightlyDebug.app/Contents/Resources', '-r', '/Users/gfritzsche/moz/fxteam/obj/dist/NightlyDebug.app/Contents/Resources/components/httpd.manifest', '-m', '-s', '-e', 'const _HTTPD_JS_PATH = "/Users/gfritzsche/moz/fxteam/obj/dist/NightlyDebug.app/Contents/Resources/components/httpd.js";', '-e', 'const _HEAD_JS_PATH = "/Users/gfritzsche/moz/fxteam/testing/xpcshell/head.js";', '-e', 'const _TESTING_MODULES_DIR = "/Users/gfritzsche/moz/fxteam/obj/_tests/modules/";', '-f', '/Users/gfritzsche/moz/fxteam/testing/xpcshell/head.js', '-p', '/var/folders/tp/mgx9wlds46j6q3ck3xhjzm2w0000gn/T/tmpe4g0Ly', '-e', 'const _SERVER_ADDR = "localhost"', '-e', u'const _HEAD_FILES = ["/Users/gfritzsche/moz/fxteam/obj/_tests/xpcshell/toolkit/components/telemetry/tests/unit/head.js"];', '-e', 'const _TAIL_FILES = [];', '-e', 'const _JSDEBUGGER_PORT = 0;', '-e', u'const _TEST_FILE = ["/Users/gfritzsche/moz/fxteam/obj/_tests/xpcshell/toolkit/components/telemetry/tests/unit/test_TelemetryPingBuildID.js"];', '-e', u'const _TEST_NAME = "toolkit/components/telemetry/tests/unit/test_TelemetryPingBuildID.js"', '-e', '_execute_test(); quit(0);']
(pid:4155) "1428320362572	Toolkit.Telemetry	TRACE	TelemetrySession::setupChromeProcess"
 0:03.50 LOG: Thread-28 INFO (xpcshell/head.js) | test run_next_test 0 finished (2)
 0:03.50 LOG: Thread-28 INFO "CONSOLE_MESSAGE: (info) 1428320362572	Toolkit.Telemetry	TRACE	TelemetrySession::setupChromeProcess"
 0:03.81 PROCESS_OUTPUT: Thread-28 (pid:4155) "1428320362682	Toolkit.Telemetry	INFO	TelemetrySession::_loadSessionData - Cannot load session data file /var/folders/tp/mgx9wlds46j6q3ck3xhjzm2w0000gn/T/tmp5PM7s3/datareporting/session-state.json: Unix error 2 during operation open on file /var/folders/tp/mgx9wlds46j6q3ck3xhjzm2w0000gn/T/tmp5PM7s3/datareporting/session-state.json (No such file or directory) No traceback available"
 0:03.61 LOG: Thread-28 INFO "CONSOLE_MESSAGE: (info) 1428320362682	Toolkit.Telemetry	INFO	TelemetrySession::_loadSessionData - Cannot load session data file /var/folders/tp/mgx9wlds46j6q3ck3xhjzm2w0000gn/T/tmp5PM7s3/datareporting/session-state.json: Unix error 2 during operation open on file /var/folders/tp/mgx9wlds46j6q3ck3xhjzm2w0000gn/T/tmp5PM7s3/datareporting/session-state.json (No such file or directory) No traceback available"
 0:03.81 PROCESS_OUTPUT: Thread-28 (pid:4155) "1428320362741	Toolkit.Telemetry	TRACE	TelemetrySession::gatherMemory"
 0:03.66 LOG: Thread-28 INFO "CONSOLE_MESSAGE: (info) 1428320362741	Toolkit.Telemetry	TRACE	TelemetrySession::gatherMemory"
 0:03.81 PROCESS_OUTPUT: Thread-28 (pid:4155) "1428320362763	Toolkit.Telemetry	TRACE	TelemetryEnvironment::constructor"
 0:03.81 PROCESS_OUTPUT: Thread-28 (pid:4155) "1428320362766	Toolkit.Telemetry	TRACE	TelemetryEnvironment::_getGFXData - Only one display adapter detected."
 0:03.81 PROCESS_OUTPUT: Thread-28 (pid:4155) "1428320362767	Toolkit.Telemetry	ERROR	TelemetryEnvironment::_isDefaultBrowser - Could not obtain shell service"
 0:03.81 PROCESS_OUTPUT: Thread-28 (pid:4155) "1428320362770	Toolkit.Telemetry	TRACE	TelemetryEnvironment::registerChangeListener for TelemetrySession::onEnvironmentChange"
 0:03.81 PROCESS_OUTPUT: Thread-28 (pid:4155) "1428320362770	Toolkit.Telemetry	TRACE	TelemetryScheduler::init"
 0:03.81 PROCESS_OUTPUT: Thread-28 (pid:4155) "1428320362770	Toolkit.Telemetry	TRACE	TelemetryScheduler::_rescheduleTimeout - isUserIdle: false"
 0:03.81 PROCESS_OUTPUT: Thread-28 (pid:4155) "1428320362770	Toolkit.Telemetry	TRACE	TelemetryScheduler::_rescheduleTimeout - scheduling next tick for Mon Apr 06 2015 13:44:22 GMT+0200 (CEST)"
 0:03.81 PROCESS_OUTPUT: Thread-28 (pid:4155) "*************************"
 0:03.81 PROCESS_OUTPUT: Thread-28 (pid:4155) "A coding exception was thrown and uncaught in a Task."
 0:03.81 PROCESS_OUTPUT: Thread-28 (pid:4155) "Full message: ReferenceError: idleService is not defined"
 0:03.81 PROCESS_OUTPUT: Thread-28 (pid:4155) "Full stack: TelemetryScheduler.init@resource://gre/modules/TelemetrySession.jsm:439:5"
 0:03.81 PROCESS_OUTPUT: Thread-28 (pid:4155) "setupChromeProcess/this._delayedInitTask<@resource://gre/modules/TelemetrySession.jsm:1568:9"
 0:03.81 PROCESS_OUTPUT: Thread-28 (pid:4155) "_run_next_test@/Users/gfritzsche/moz/fxteam/testing/xpcshell/head.js:1377:9"
 0:03.81 PROCESS_OUTPUT: Thread-28 (pid:4155) "do_execute_soon/<.run@/Users/gfritzsche/moz/fxteam/testing/xpcshell/head.js:646:9"
 0:03.81 PROCESS_OUTPUT: Thread-28 (pid:4155) "_do_main@/Users/gfritzsche/moz/fxteam/testing/xpcshell/head.js:207:5"
 0:03.81 PROCESS_OUTPUT: Thread-28 (pid:4155) "_execute_test@/Users/gfritzsche/moz/fxteam/testing/xpcshell/head.js:506:5"
 0:03.81 PROCESS_OUTPUT: Thread-28 (pid:4155) "@-e:1:1"
 0:03.81 PROCESS_OUTPUT: Thread-28 (pid:4155) "*************************"
 0:03.69 LOG: Thread-28 ERROR Unexpected exception ReferenceError: idleService is not defined at resource://gre/modules/TelemetrySession.jsm:439
TelemetryScheduler.init@resource://gre/modules/TelemetrySession.jsm:439:5
setupChromeProcess/this._delayedInitTask<@resource://gre/modules/TelemetrySession.jsm:1568:9
_run_next_test@/Users/gfritzsche/moz/fxteam/testing/xpcshell/head.js:1377:9
do_execute_soon/<.run@/Users/gfritzsche/moz/fxteam/testing/xpcshell/head.js:646:9
_do_main@/Users/gfritzsche/moz/fxteam/testing/xpcshell/head.js:207:5
_execute_test@/Users/gfritzsche/moz/fxteam/testing/xpcshell/head.js:506:5
@-e:1:1
(In reply to Georg Fritzsche [:gfritzsche] from comment #12)
> This has test failures in test_TelemetryPingBuildID.js:

Yes, the patch needs to be rebased against the latest m-c.
Attached patch bug1139754.patch - v2 (obsolete) (deleted) — Splinter Review
Rebased.
Attachment #8587442 - Attachment is obsolete: true
Attachment #8588592 - Flags: review+
(In reply to Alessio Placitelli [:Dexter] from comment #10)
> That's a good idea. The "idle-daily" event itself is not being removed by
> this patch, as "gather-telemetry" still uses it.

This patch removes the "idle" listener which calls TelemetryPing.send(). That call to TelemetryPing.send() would also send persisted pings after sending the idle-daily ping. I'd like us to continue sending persisted pings on idle-daily.

> Maybe we can file a followup bug and move "idle-daily" handling to
> TelemetryScheduler (removing it from TelemetrySession after we deal with
> gather-telemetry)? So that the logic driving telemetry actions is
> encapsulated within that object?

Yes, that would be good.
Flags: needinfo?(vdjeric)
Attached patch bug1139754.patch - v3 (obsolete) (deleted) — Splinter Review
Changed the patch to send pending pings on idle-daily.

This patch also adds test coverage for that and moves |decodeRequestPayload| to head.js.
Attachment #8588592 - Attachment is obsolete: true
Attachment #8589087 - Flags: review?(gfritzsche)
Comment on attachment 8589087 [details] [diff] [review]
bug1139754.patch - v3

Review of attachment 8589087 [details] [diff] [review]:
-----------------------------------------------------------------

::: toolkit/components/telemetry/TelemetrySession.jsm
@@ +101,1 @@
>  const IDLE_TIMEOUT_SECONDS = 5 * 60;

This is unused.

@@ +1850,5 @@
>        // Enqueue to main-thread, otherwise components may be inited by the
>        // idle-daily category and miss the gather-telemetry notification.
>        Services.tm.mainThread.dispatch((function() {
> +        // Notify that data should be gathered now. We are keeping this behaviour for
> +        // now but it will be removed as soon as bug 1127907 lands.

Mark it with a TODO too:
TODO: We are keeping this ...

@@ +1856,2 @@
>        }).bind(this), Ci.nsIThread.DISPATCH_NORMAL);
> +      // Try to send any pending persisted ping now.

Add something like:
"TODO: This is just a fallback for now.
Remove this when we have ping send scheduling properly factored out and driven independently of this module."

::: toolkit/components/telemetry/tests/unit/head.js
@@ +17,5 @@
>  
>  let gOldAppInfo = null;
>  let gGlobalScope = this;
>  
> +function decodeRequestPayload(request) {

Add a comment explaining the behavior.

::: toolkit/components/telemetry/tests/unit/test_TelemetryPing_idle.js
@@ +44,5 @@
> +    gHttpServer.registerPrefixHandler("/submit/telemetry/", request => resolve(request));
> +  });
> +
> +  let gatherPromise = new Promise(resolve => {
> +    Services.obs.addObserver(function observeTelemetry() {

Nit: Less nesting etc. with defer()?
let p = PromiseUtils.defer();
addObserver(p.resolve, "gather-telemetry");
yield p;
removeObserver(p.resolve, ...

@@ +55,2 @@
>    TelemetrySession.observe(null, "idle-daily", null);
> +  yield gatherPromise;

Assert.ok(true, "Received gather-telemetry notification.");
Attachment #8589087 - Flags: review?(gfritzsche) → feedback+
Attached patch bug1139754.patch - v4 (obsolete) (deleted) — Splinter Review
Attachment #8589087 - Attachment is obsolete: true
Attachment #8589145 - Flags: review?(gfritzsche)
(In reply to Georg Fritzsche [:gfritzsche] from comment #17)
> Comment on attachment 8589087 [details] [diff] [review]
> bug1139754.patch - v3
> 
> Review of attachment 8589087 [details] [diff] [review]:
> -----------------------------------------------------------------
> 
> ::: toolkit/components/telemetry/TelemetrySession.jsm
> @@ +101,1 @@
> >  const IDLE_TIMEOUT_SECONDS = 5 * 60;
> 
> This is unused.

This is used by the idleService in TelemetryScheduler.
Comment on attachment 8589145 [details] [diff] [review]
bug1139754.patch - v4

Review of attachment 8589145 [details] [diff] [review]:
-----------------------------------------------------------------

::: toolkit/components/telemetry/TelemetrySession.jsm
@@ +1850,4 @@
>        // Enqueue to main-thread, otherwise components may be inited by the
>        // idle-daily category and miss the gather-telemetry notification.
>        Services.tm.mainThread.dispatch((function() {
> +        // Notify that data should be gathered now. TODO: We are keeping this behaviour for

Nit: TODO on a new line.
Attachment #8589145 - Flags: review?(gfritzsche) → review+
Attached patch bug1139754.patch - v4 (deleted) — Splinter Review
Moved the TODO to a new line.

Try push: https://treeherder.mozilla.org/#/jobs?repo=try&revision=0740689575c2
Attachment #8589145 - Attachment is obsolete: true
Attachment #8589516 - Flags: review+
Keywords: checkin-needed
https://hg.mozilla.org/mozilla-central/rev/0b7c79fbd6e9
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Flags: in-testsuite+
Resolution: --- → FIXED
Target Milestone: --- → mozilla40
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: