Closed Bug 1017291 Opened 10 years ago Closed 10 years ago

We should record rejected remote candidates in telemetry

Categories

(Core :: WebRTC: Networking, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla32

People

(Reporter: bwc, Assigned: bwc)

Details

Attachments

(1 file, 1 obsolete file)

In some of my testing, I've found that apprtc has a tendency to reorder the remote SDP and the remote trickle candidates, so that sometimes trickle candidates arrive first. In this case, we drop the candidates on the floor, which can cause ICE to fail. It would be nice to know how often remote trickle candidates are dropped.
Assignee: nobody → docfaraday
Status: NEW → ASSIGNED
Comment on attachment 8430425 [details] [diff] [review]
Keep track of the number of errors in AddIceCandidate before ICE completes, and record this number in telemetry in the success and failure cases separately.

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

Note that I've deliberately only taken into account the number of errors before ICE completes; I don't want subsequent errors to add noise to the statistics.
Attachment #8430425 - Flags: review?(ekr)
Comment on attachment 8430425 [details] [diff] [review]
Keep track of the number of errors in AddIceCandidate before ICE completes, and record this number in telemetry in the success and failure cases separately.

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

Clearing the r? bit until I understand why this is 9. I'll r+ if there is a good answer.

::: media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.h
@@ +723,5 @@
>    bool mHaveDataStream;
>  
>    // Holder for error messages from parsing SDP
>    std::vector<std::string> mSDPParseErrorMessages;
> +  unsigned int mAddCandidateErrorCount;

Suggest using a concrete type like uint32_t

::: toolkit/components/telemetry/Histograms.json
@@ +5272,5 @@
> +    "expires_in_version": "never",
> +    "kind": "linear",
> +    "high": "10",
> +    "n_buckets": "9",
> +    "description": "The number of times AddIceCandidate failed on a given PeerConnection, given that ICE succeeded."

I'm not an expert here, but why is this stopping at 9? Isn't it possible to have a lot more candidates?
Attachment #8430425 - Flags: review?(ekr)
(In reply to Eric Rescorla (:ekr) from comment #3)
> Comment on attachment 8430425 [details] [diff] [review]
> Keep track of the number of errors in AddIceCandidate before ICE completes,
> and record this number in telemetry in the success and failure cases
> separately.
> 
> Review of attachment 8430425 [details] [diff] [review]:
> -----------------------------------------------------------------
> 
> Clearing the r? bit until I understand why this is 9. I'll r+ if there is a
> good answer.
> 
> ::: media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.h
> @@ +723,5 @@
> >    bool mHaveDataStream;
> >  
> >    // Holder for error messages from parsing SDP
> >    std::vector<std::string> mSDPParseErrorMessages;
> > +  unsigned int mAddCandidateErrorCount;
> 
> Suggest using a concrete type like uint32_t
> 

   If our coding convention for string stuff didn't force the use of format strings (if we ever want to printf this we have to cast or use an ugly macro), or if I actually cared about the particulars of type width here, I would agree.

> ::: toolkit/components/telemetry/Histograms.json
> @@ +5272,5 @@
> > +    "expires_in_version": "never",
> > +    "kind": "linear",
> > +    "high": "10",
> > +    "n_buckets": "9",
> > +    "description": "The number of times AddIceCandidate failed on a given PeerConnection, given that ICE succeeded."
> 
> I'm not an expert here, but why is this stopping at 9? Isn't it possible to
> have a lot more candidates?

This limit was mostly arbitrary, based on what kind of granularity I felt was actionable (what do we do differently if samples >9 fall into one bucket, or spread across more buckets?). But, buckets are basically free, and might make the histogram easier to look at, so I'm happy to add more. I just don't want to end up with a histogram with razor-thin bars because some weirdo managed to pump 2000 garbage candidates at us. I think any more than 30 starts to make the histogram hard to read, does that sound sane as a limit?
Attachment #8430425 - Attachment is obsolete: true
Attachment #8430857 - Flags: review?(ekr)
Comment on attachment 8430857 [details] [diff] [review]
Keep track of the number of errors in AddIceCandidate before ICE completes, and record this number in telemetry in the success and failure cases separately.

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

lgtm
Attachment #8430857 - Flags: review?(ekr) → review+
Try looks good enough for me.
Keywords: checkin-needed
https://hg.mozilla.org/mozilla-central/rev/6fcbe7b1dec2
Status: ASSIGNED → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla32
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: