- From: Arvind Jain <arvind@google.com>
- Date: Wed, 11 Dec 2013 23:12:46 -0800
- To: Jonas Sicking <jonas@sicking.cc>
- Cc: Ilya Grigorik <igrigorik@google.com>, Jatinder Mann <jmann@microsoft.com>, "public-web-perf@w3.org" <public-web-perf@w3.org>
- Message-ID: <CAOYaDdNsNaMd6PK+M2FO9ykE0sAsnHpsUAKM40N4FJNt1F6EVQ@mail.gmail.com>
OK I updated the definition to have a boolean return value. https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/Beacon/Overview.html The updates are in Section 4.2 and Step 7 and 9 of the Processing Model (Section 4.3). Please let me know if there are more comments. I think I've addressed all comments raised so far. Arvind On Tue, Dec 10, 2013 at 9:37 AM, Jonas Sicking <jonas@sicking.cc> wrote: > On Mon, Dec 9, 2013 at 10:46 PM, Arvind Jain <arvind@google.com> wrote: > > > > Is it preferable to keep the return value void but throw a quota exceeded > > exception if the queue limit would be exceeded or change the return > value to > > a boolean? > > No. Throwing exceptions in intermittent conditions is a bad idea. It > can cause hard-to-reproduce bugs where important functionality > implemented in code that's run after the throwing function call > sometimes breaks with little help for the author to figure out why. > > Keep in mind that the exception might never happen on the developer's > computer, but only on the end user's computer. At worst, there might > even be an exception handler higher up in the callstack which prevents > the exception from getting logged through window.onerror. > > So returning true/false is a safer syntax. > > / Jonas > > > > > > > On Mon, Dec 9, 2013 at 5:55 PM, Jonas Sicking <jonas@sicking.cc> wrote: > >> > >> On Sun, Dec 8, 2013 at 4:04 PM, Arvind Jain <arvind@google.com> wrote: > >> > I'm continuing to make changes to the current document. I think we > >> > should > >> > finalize the behavior and then we can debate whether to retrofit to > XHR. > >> > >> Agreed. > >> > >> > We still need to nail down the size/queue limits. There is no mention > of > >> > queue limits in the document yet. > >> > >> The more I think about it, the more I think that having strict limits > >> in the spec won't help us that much. Given that we need to have > >> max-queued-per-origin limits, we still need a way to signal to the > >> page if it bumped into those limits or not. > >> > >> That said, I think it would be good if we who are doing the initial > >> implementation of these specs could have an implementor-agreement on > >> what limits to use for now. And maybe even put such a limit as an > >> non-normative note in the spec, mostly as a documentation for web > >> developers. > >> > >> So we still need to have a way to signal to the author if a request > >> was queued or not. The two ways I can think of are: > >> > >> 1. Have a way to query the status of old requests. I.e. you can see if > >> old requests success/fail and failure reason (size too large, network > >> problems, etc). > >> 2. Synchronously return true/false at the time when the request is > queued. > >> > >> 1 is more feature full, but more work to implement. > >> > >> 2 has the downside that implementing a synchronous true/false is more > >> work if you want to avoid synchronous communication between the > >> child-rendering-process and the parent-management-process. > >> > >> One implementation strategy would be to asynchronously signal to all > >> child processes how much data is currently queued for a given origin. > >> Then the child can just compare against that whenever a new request is > >> queued. This does introduce a small race if two or more child > >> processes attempt to queue requests at the same time. However the only > >> harm is that slightly more than allowed data would be queued, which > >> isn't really a big deal. > >> > >> There's no way to queue unlimited data anyway, at least not without > >> opening infinite number of child processes which I suspect would be a > >> bigger problem anyway if that was possible :) > >> > >> So I think 2 gets my vote. > >> > >> / Jonas > > > > >
Received on Thursday, 12 December 2013 07:13:15 UTC