On Apr 21, 2010, at 5:11 PM, Jeremy Orlow wrote:

> On Mon, Apr 19, 2010 at 11:44 PM, Nikunj Mehta <nik...@o-micron.com> wrote:
> 
> On Mar 15, 2010, at 10:45 AM, Jeremy Orlow wrote:
> 
>> On Mon, Mar 15, 2010 at 3:14 PM, Jeremy Orlow <jor...@chromium.org> wrote:
>> On Sat, Mar 13, 2010 at 9:02 AM, Nikunj Mehta <nik...@o-micron.com> wrote:
>> On Feb 18, 2010, at 9:08 AM, Jeremy Orlow wrote:
>>> 2) In the spec, dynamic transactions and the difference between static and 
>>> dynamic are not very well explained.
>> 
>> Can you propose spec text?
>> 
>> In 3.1.8 of http://dev.w3.org/2006/webapi/WebSimpleDB/ in the first 
>> paragraph, adding a sentence would probably be good enough.  "If the scope 
>> is dynamic, the transaction may use any object stores or indexes in the 
>> database, but if another transaction touches any of the resources in a 
>> manner that could not be serialized by the implementation, a RECOVERABLE_ERR 
>> exception will be thrown on commit." maybe?
>> 
>> By the way, are there strong use cases for Dynamic transactions?  The more 
>> that I think about them, the more out of place they seem.
> 
> Dynamic transactions are in common place use in server applications. It 
> follows naturally that client applications would want to use them. 
> 
> There are a LOT of things that are common place in server applications that 
> are not in v1 of IndexedDB.
>  
> Consider the use case where you want to view records in entityStore A, while, 
> at the same time, modifying another entityStore B using the records in 
> entityStore A. Unless you use dynamic transactions, you will not be able to 
> perform the two together.
> 
> ...unless you plan ahead.  The only thing dynamic transactions buy you is not 
> needing to plan ahead about using resources.
>  
> The dynamic transaction case is particularly important when dealing with 
> asynchronous update processing while keeping the UI updated with data.
> 
>> 
>> 
>> Background: Dynamic and static are the two types of transactions in the 
>> IndexedDB spec.  Static declare what resources they want access to before 
>> they begin, which means that they can be implemented via objectStore level 
>> locks.  Dynamic decide at commit time whether the transaction was 
>> serializable.  This leaves implementations with two options:
>> 
>> 1) Treat Dynamic transactions as "lock everything".
> 
> This is not consistent with the spec behavior. Locking everything is the 
> static global scope.
> 
> I don't understand what you're trying to say in the second sentence.  And I 
> don't understand how this is inconsistent with spec behavior--it's simply 
> more conservative.
>  
> 
>> 
>> 2) Implement MVCC so that dynamic transactions can operate on a consistent 
>> view of data.  (At times, we'll know a transaction is doomed long before 
>> commit, but we'll need to let it keep running since only .commit() can raise 
>> the proper error.)

MVCC is not required for dynamic transactions. MVCC is only required to open a 
database in the DETACHED_READ mode.

Since locks are acquired in the order in which they are requested, a failure 
could occur when an object store is being opened, but it is locked by another 
transaction. One doesn't have to wait until commit is invoked.

>> 
>> Am I missing something here?
>> 
>> 
>> If we really expect UAs to implement MVCC (or something else along those 
>> lines), I would expect other more advanced transaction concepts to be 
>> exposed.

What precisely are you referring to? Why are these other more advanced 
transaction concepts required?

>>  If we expect most v1 implementations to just use objectStore locks and thus 
>> use option 1, then is there any reason to include Dynamic transactions?

Why do you conclude that most implementations just use object store locks?

>> 
>> J
> 
> Can you please respond to the rest?  I really don't see the point of dynamic 
> transactions for v1.

There has been previous discussions on this DL about the need for dynamic 
locking [1], MVCC [2] and incremental locking [3] . Did you have anything new 
to add to that discussion?

[1] http://lists.w3.org/Archives/Public/public-webapps/2010JanMar/0197.html
[2] http://lists.w3.org/Archives/Public/public-webapps/2010JanMar/0322.html
[3] http://lists.w3.org/Archives/Public/public-webapps/2009OctDec/1080.html

Reply via email to