I’m trying to use indexedDB with jax webGL framework but for some reason setVersion isn’t working.
Here’s the relevant coffeescript
if @indexedDB and @objectStore and @key
idb_request = indexedDB.open @indexedDB
idb_request.onsuccess = (e) =>
idb = e.target.result
if idb.objectStoreNames.contains @objectStore
store = idb.transaction([@objectStore], IDBTransaction.READ_WRITE).objectStore(@objectStore)
else
console.log idb.version # => ""
version_request = idb.setVersion(0.1)
version_request.onblocked = (e) -> console.log e #=> this one fires
version_request.onerror = (e) -> console.log e
version_request.onsuccess = (e) -> console.log e
version_request.onfailure = (e) -> console.log e
idb_request.onerror = (e) -> console.log "ERROR: Unable to open indexedDB"
...
The only handler attached to the version request that fires is onblocked, But i’m not even sure what it means for the request to be blocked or why this would happen…
Why would a version request be blocked?
According to the IndexedDB spec it’s possible a
blockedevent might be sent if a database connection is still open while a version change request is made. See: http://www.w3.org/TR/IndexedDB/#version_change-transaction-stepsHere’s the text from the spec:
3. If running asynchronously and any of the connections in openDatabases are still not closed, queue up a blocked event for the request.FWIW: I couldn’t reproduce this issue in Jax; I know better than to say it isn’t possible, but it’s looking unlikely to be a bug in the framework at this time. The corresponding Jax issue is: https://github.com/sinisterchipmunk/jax/issues/37