Open Bug 1421316 Opened 7 years ago Updated 1 year ago

More versatile error handling in server.TCPConnection

Categories

(Remote Protocol :: Marionette, enhancement, P5)

Version 3
enhancement

Tracking

(Not tracked)

People

(Reporter: ato, Unassigned)

Details

When server.TCPConnection#onPacket receives a new message and it
is not an array we use error.report to log it to stdout.  We could
possibly construct an error response and send that back in this
case.

I don’t think there is anything we can do if sendResponse or sendError
fails, however.
The code Andreas is referring to here can be found at:
https://dxr.mozilla.org/mozilla-central/rev/c2248f85346939d3e0b01f57276c440ccb2d16a1/testing/marionette/server.js#481-486

Andreas, which kind of error class should be used in this case? I would assume `UnknownError`.

Would you mind to mentor this bug?
Flags: needinfo?(ato)
I had a another look into this and I can’t find a good way to know
how to construct an error response when Array.isArray(data) fails.
The response packet is meant to be a four-element array such as
[<type>, <id>, <error>, <data>] but if we fail to unmarshal the
command request we won’t know what command ID to respond to.

Do you have any great ideas?
Flags: needinfo?(ato)
Priority: -- → P5
Oh, indeed. This is really sad. But maybe we could at least use logging in `error.report()`, and get this out as an error, or at least warning?
(In reply to Henrik Skupin (:whimboo) from comment #3)

> Oh, indeed. This is really sad.

I guess we could potentially introduce a message ID -1 meaning
something catastrophic went wrong.  That involves building support
for it into clients as well.

> But maybe we could at least use logging in `error.report()`, and
> get this out as an error, or at least warning?

I believe that already happens.
Severity: normal → S3
Product: Testing → Remote Protocol
You need to log in before you can comment on or make changes to this bug.