Send-tab telemetry should record a new `streamID` GUID to assist analysis when sending to multiple devices
Categories
(Firefox :: Sync, enhancement)
Tracking
()
| Tracking | Status | |
|---|---|---|
| firefox79 | --- | fixed |
People
(Reporter: rfkelly, Assigned: markh)
References
(Blocks 1 open bug)
Details
Attachments
(2 files)
|
47 bytes,
text/x-phabricator-request
|
Details | Review | |
|
2.56 KB,
text/plain
|
chutten
:
data-review+
|
Details |
Send-tab includes a randomly-generated "flow id" in the metrics it emits via telemetry, with the intention that we can use it to match any given "command-sent" event to the corresponding "command-received" event emitted by another device. The code is here:
And it generates a fresh flowID on each call to the send() method.
However, the send() method supports sending a tab to multiple devices in a single operation, to power e.g. the "send to all devices" feature. IIUC the code will currently send the same flowID to all N devices, then emit N "command-sent" telemetry events with the same flowID. This complicates analysis when matching events via flowID, because we have to try to disambiguate up to N "command-received" events by matching in device ID.
Could we simplify analysis by using a different flowID for each unique send to each unique device? Or is the ability to tie together sends to multiple devices important for other reasons?
| Reporter | ||
Updated•5 years ago
|
| Assignee | ||
Comment 1•5 years ago
|
||
I seem to recall this bug being opened in the past? :) I don't think there's a good reason for the current situation. A theoretical benefit of how things are done now is slightly better tracking when sending to multiple devices, but I don't believe that was the reason it's done this way (and that's probably not strictly true anyway - maybe we could just ensure the exact same timestamp is used in that scenario?)
| Reporter | ||
Comment 2•5 years ago
|
||
I made a redash query to explore how often this happens in practice:
https://sql.telemetry.mozilla.org/queries/71319/source#179160
The good news is that the vast majority of command-sent and command-received events correspond to a single flowID, so optimistically I expect the effect of this on any aggregate analysis to be small.
One interesting tidbit: it's vastly more common (like, an order of magnitude more common) for there to be multiple command-set events with the same flowID, than for there to be multiple command-received events with the the same flowID. It makes me wonder if some users go to send themselves a tab, see that their device list contains many stale duplicates, and select "send to all devices" as an easy way to ensure it gets delivered to their one still-active device.
| Reporter | ||
Comment 3•5 years ago
|
||
This complicates analysis when matching events via flowID, because we have to try to
disambiguate up to N "command-received" events by matching in device ID.
In theory, dealing with the current state of affairs should be a simple matter of joining "command-sent" to "command-received" using the (flowID, targetDeviceID) tuple rather than just the flowID. In practice we seem to be missing a surprisingly high number of device ids (Bug 1639831) so that risks some false negatives.
| Reporter | ||
Comment 4•5 years ago
|
||
From slack conversation with :markh, I think the current implementation gives us the worst of both worlds in the tradeoff between information-content and ease-of-use:
- If the flowID was unique to the largest single UX event when sending a tab (multiple tabs sent to multiple devices via one UX operation) then it would provide the most information about the user experience.
- If the flowID was unique to the smallest atomic unit of sending a tab (one tab sent to one device) then it would simplify analysis.
But it currently occupies this middle ground (one tab sent to multiple devices) that doesn't optimize for either outcome.
| Assignee | ||
Updated•5 years ago
|
| Assignee | ||
Comment 5•5 years ago
|
||
| Assignee | ||
Comment 6•5 years ago
|
||
Comment 7•5 years ago
|
||
Comment 9•5 years ago
|
||
| bugherder | ||
Description
•