Re: IndexedDB: calling IDBTransaction.objectStore() or IDBObjectStore.index() after transaction is finished?

On Fri, Dec 16, 2011 at 3:30 PM, Jonas Sicking <jonas@sicking.cc> wrote:

> On Fri, Dec 16, 2011 at 2:41 PM, Israel Hilerio <israelh@microsoft.com>
> wrote:
> > On December 15, 2011 10:20 PM, Jonas Sicking wrote:
> >> On Thu, Dec 15, 2011 at 12:54 PM, Joshua Bell <jsbell@chromium.org>
> >> wrote:
> >> > Is there any particular reason why IDBTransaction.objectStore() and
> >> > IDBObjectStore.index() should be usable (i.e. return values vs. raise
> >> > exceptions) after the containing transaction has finished?
> >> >
> >> > Changing the spec so that calling these methods after the containing
> >> > transaction has finished raises InvalidStateError (or
> >> > TransactionInactiveError) could simplify implementations.
> >>
> >> That would be ok with me.
> >>
> >> Please file a bug though.
> >>
> >> / Jonas
> >>
> > Do we want to throw two Exceptions or one?
> > We currently throw a  NOT_ALLOWED_ERR for IDBTransaction.objectStore()
> and a TRANSACTION_INACTIVE_ERR for IDBObjectStore.index().
> >
> > It seems that we could throw a TRANSACTION_INACTIVE_ERR for both.
> > What do you think?
>
> I think InvalidStateError is slightly more correct (for both
> IDBTransaction.objectStore() and IDBObjectStore.index) since we're not
> planning on throwing if those functions are called in between
> transaction-request callbacks, right?
>
> I.e. TransactionInactiveError is more appropriate if it's always
> thrown whenever a transaction is inactive, which isn't the case here.
>
> / Jonas
>

Agreed - that we should be consistent between methods, and that
InvalidStateError is slightly more correct for the reason Jonas cites.

For reference, Chrome currently throws NOT_ALLOWED_ERR for
IDBTransaction.objectStore() but does not throw for IDBObjectStore.index().

Received on Friday, 16 December 2011 23:37:29 UTC