- From: Ehsan Akhgari <ehsan@mozilla.com>
- Date: Mon, 21 Oct 2013 21:07:57 -0400
- To: Andrew Wilson <atwilson@google.com>
- Cc: WHAT Working Group <whatwg@lists.whatwg.org>, Boris Zbarsky <bzbarsky@mit.edu>, Ian Hickson <ian@hixie.ch>, Jonas Sicking <jonas@sicking.cc>, Gene Lian <clian@mozilla.com>
On Mon, Oct 21, 2013 at 3:19 AM, Andrew Wilson <atwilson@google.com> wrote: > > > > On Sat, Oct 19, 2013 at 2:26 AM, Jonas Sicking <jonas@sicking.cc> wrote: >> >> >> What I think might work is to say that as long as a "channeldropped" >> event listener is registered with a port, that is equivalent to >> holding a strong reference to the port. I.e. that prevents the channel >> from being GCed. Even if no references are held to either port. >> >> In other words, we'd give up 3, but only when 2 is actively used. >> > > Agreed - this was my proposal here: > http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2013-October/041068.html in > response to your earlier email. > Yeah, you're right, sorry for overlooking this the first time around! > So the expectation is that a caller should only register a >> "channeldropped" event if it's actively waiting for a response from >> that thread. It's not something that you should register when creating >> the port and then never unregister. Having a "channeldropped" event >> listener registered can cause a whole worker thread to be kept alive >> longer than it otherwise would. >> > > How does this work - imagine that I have a reference to a MessagePort, but > I'm not actively waiting for any response on the port so I don't have a > channeldropped event listener. > > Now, the remote side of the port crashes. I send a message on the port and > add a "channeldropped" event handler - are you saying that adding a > "channeldropped" event handler should trigger a channeldropped event if the > other side has already crashed? If not, then how do I find out that the > channel has been dropped if I don't keep the event handler registered all > the time? > I think we may need to mandate that a "channeldropped" eventis fired when you register a handler on a port with the other side having already crashed. Cheers, -- Ehsan <http://ehsanakhgari.org/>
Received on Tuesday, 22 October 2013 01:09:03 UTC