[whatwg] Storage mutex
Jeremy Orlow
jorlow at chromium.org
Fri Aug 28 12:36:41 PDT 2009
On Fri, Aug 28, 2009 at 4:05 AM, Kevin Benson <kevin.m.benson at gmail.com>wrote:
> On Sun, Aug 23, 2009 at 1:22 AM, Jeremy Orlow<jorlow at chromium.org> wrote:
> > On Tue, Aug 18, 2009 at 4:26 PM, Jeremy Orlow <jorlow at chromium.org
> > wrote:
> >>
> >>> Lastly, is navigator.getStorageUpdates() the right name for the
> function
> >>> that drops the lock? Why was it changed from navigator.releaseLock()?
> I
> >>> assume we're trying to avoid the word "lock", but the reason why you'd
> need
> >>> to call a function to get updates is not clear without understanding
> the
> >>> concept of a lock...so what's the point of making this so cryptic?
> >>
> >> Authors would be confused that there's no aquireLock() API.
> >
> > Good point.
> > But getStorageUpdates is still not the right name for it. The only way
> that
> > there'd be any updates to get is if, when you call the function, someone
> > else takes the lock and makes some updates. Maybe it should be
> yieldStorage
> > (or yieldStorageMutex)? In other words, maybe the name should imply that
> > you're allowing concurrent updates to happen?
>
> How about:
>
> commitStorageUpdates
>
> ... since a new transactor cannot write to storage until a commit
> point is reached by the current transactor finishing up and releasing
> the lock.
Both commit and allow seem like good alternatives. I still like
yieldStorageMutex, but I understand using the word Mutex might seem too
scary. Now I'll just pray that Ian also finds one of these names to be
better than getStorageUpdates. :-)
On Sun, Aug 23, 2009 at 11:33 PM, Robert O'Callahan <robert at ocallahan.org>
wrote:
> On Sat, Aug 22, 2009 at 10:22 PM, Jeremy Orlow <jorlow at chromium.org>
> wrote:
>
>> On Sat, Aug 22, 2009 at 5:54 AM, Robert O'Callahan <robert at ocallahan.org>
>> wrote:
>>
>>> On Wed, Aug 19, 2009 at 11:26 AM, Jeremy Orlow <jorlow at chromium.org>
>>> wrote:
>>>
>>>> First of all, I was wondering why all user prompts are specified as
>>>> "must release the storage mutex" (
>>>> http://dev.w3.org/html5/spec/Overview.html#user-prompts). Should this
>>>> really say "must" instead of "may"? IIRC (I couldn't find the original
>>>> thread, unfortunately) this was added because of deadlock concerns. It
>>>> seems like there might be some UA implementation specific ways this could
>>>> deadlock and there is the question of whether we'd want an alert() while
>>>> holding the lock to block other execution requiring the lock, but I don't
>>>> see why the language should be "must". For Chromium, I don't think we'll
>>>> need to release the lock for any of these, unless there's some
>>>> deadlock scenario I'm missing here.
>>>
>>>
>>> So if one page grabs the lock and then does an alert(), and another page
>>> in the same domain tries to get the lock, you're going to let the latter
>>> page hang until the user dismisses the alert in the first page?
>>>
>>
>> Yes. And I agree this is sub-optimal, but shouldn't it be left up to the
>> UAs what to do? I feel like this is somewhat of an odd case to begin with
>> since alerts lock up most (all?) browsers to a varying degrees even without
>> using localStorage.
>>
>
> That behaviour sounds worse than what Firefox currently does, where an
> alert disables input to all tabs in the window (which is already pretty
> bad), because it willl make applications in visually unrelated tabs and
> windows hang.
>
Apparently (based on the reply from Jonas on the thread I split this into)
it sounds like this behavior is actually a bug. Either way, it breaks
run-to-completion and (as far as I can tell) goes against the spec (but I'm
fuzzy on this part).
So I guess the question is why we should make a special case for
LocalStorage regarding modal dialog boxes?
On Sat, Aug 22, 2009 at 10:22 PM, Jeremy Orlow <jorlow at chromium.org> wrote:
> On Tue, Aug 18, 2009 at 4:26 PM, Jeremy Orlow <jorlow at chromium.org> wrote:
>
>> It's also worth noting that Chromium is probably going to need to drop the
>> storage mutex for most if not all plugin related calls due to deadlock
>> conditions. If there were some place to mention this as a "may" type thing,
>> it'd be good, but I realize it's probably out of scope for HTML 5.
>>
>
> Oops. The spec already does specify this behavior:
> http://dev.w3.org/html5/spec/Overview.html#storage-mutex
>
One question about this, actually. I'm a bit troubled by the following
language:
"Whenever a script<http://dev.w3.org/html5/spec/Overview.html#concept-script>
calls
into a plugin <http://dev.w3.org/html5/spec/Overview.html#plugin>, and
whenever a plugin <http://dev.w3.org/html5/spec/Overview.html#plugin> calls
into a script <http://dev.w3.org/html5/spec/Overview.html#concept-script>,
the user agent must release the storage
mutex<http://dev.w3.org/html5/spec/Overview.html#storage-mutex>
."
Can a plugin ever call into a script while a script is running besides when
the script is making a synchronous call to the plugin? If so, that worries
me since it'd be a way for the script to lose its lock at _any_ time.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.whatwg.org/pipermail/whatwg-whatwg.org/attachments/20090828/8a60d27f/attachment-0002.htm>
More information about the whatwg
mailing list