On Wed, Dec 7, 2011 at 3:15 PM, Israel Hilerio <isra...@microsoft.com> wrote:
> On Wednesday, December 07, 2011 2:48 PM, Jonas Sicking wrote:
>> On Wed, Dec 7, 2011 at 2:27 PM, Israel Hilerio <isra...@microsoft.com>
>> wrote:
>> > On Saturday, December 03, 2011 9:25 PM, Jonas Sicking wrote:
>> >> On Thu, Dec 1, 2011 at 2:51 PM, Israel Hilerio
>> >> <isra...@microsoft.com>
>> >> wrote:
>> >> > Jonas,
>> >> >
>> >> > Since you believe we should keep the values of version as a
>> >> > non-nullable
>> >> long long, what should the value of version be during the first
>> >> run/creation if the transaction is aborted? Should it be 0 (I don't
>> >> believe we want version to be a negative number)?
>> >>
>> >> I realized the other day that the question also applies to what
>> >> should db.objectStoreNames return? It makes sense that whatever
>> >> changes we make to .version we'd also make to .objectStoreNames. Do
>> >> we revert it to the value it had before the transaction was started? Do we
>> throw?
>> >> Do we return null/0?
>> >>
>> >> Ultimately I feel like there really is very little reason for someone
>> >> to use these properties if the VERSION_CHANGE transaction fails, and
>> >> so I'm leaning more towards that we should do whatever is easy to
>> implement.
>> >>
>> >> So what I suggest is that we do the same thing as for .close(). I.e.
>> >> we leave the values untouched. This seems not only easy to implement
>> >> but also is consistent with .close().
>> >>
>> >> / Jonas
>> >
>> > What about this behavior to summarize all ideas:
>> >
>> > Once the onupgradeneeded handler is called, the database is
>> automatically created.  If the VERSION_CHANGE transaction is aborted for
>> any reason when the database is being created for the first time, the
>> database will remain in the system with the following attributes:
>> name="assigned db name", version = 0, and objectStoresNames = null.
>>
>> That's fine with me yeah.
>
> Cool!
>
>>
>> And what about when .close() is called during the VERSION_CHANGE
>> transaction?
>>
>> / Jonas
>
> For us, when the close method is invoked inside the onupgradeneeded handler, 
> the db is immediately marked to be closed but it is not immediately closed.  
> The db is closed at a later time when no one else is interacting with it.  
> Therefore, closing the db inside the onupgradeneeded handler doesn't do 
> anything to the current transaction.

Yes, that's required by spec.

The question is, what does the database-object's .name, .version and
.objectStoreNames properties return after the transaction is comitted
if the database was closed?

/ Jonas

Reply via email to