Stiamo costruendo un'applicazione che fa ampio uso di IndexedDB su Firefox per archiviare dati offline.Errore "Operazione non riuscita perché non è stato possibile trovare l'oggetto del database richiesto ..." quando si utilizza indexedDB
Questo metodo funziona bene la maggior parte del tempo, ma di tanto in tanto riesce con errori come il seguente:
Exception... "The operation failed because the requested database object could
not be found. For example, an object store did not exist but was being opened."
code: "3" nsresult: "0x80660003 (NS_ERROR_DOM_INDEXEDDB_NOT_FOUND_ERR)"
Sembra di fallire in vari punti del codice; qui è uno dei colpevoli:
_writePage: (storeName, startIndex, endIndex, binder) ->
writeTransaction = @connection.transaction([storeName], @idbTransaction.READ_WRITE)
store = writeTransaction.objectStore(storeName)
for index in [startIndex...endIndex] when (item = binder.list[index])?
writeRequest = store.put(item)
writeRequest.onerror = binder.failCallback()
writeRequest.onsuccess = binder.successCallback()
if endIndex >= binder.list.length
binder.finishedRegisteringCallbacks()
return
setTimeout((=> @_writePage(storeName, endIndex, endIndex + @WRITE_EACH_PAGE_SIZE, binder)), @WRITE_EACH_PAGE_DELAY)
null
La cosa che enigmi me è che i fallimenti si verificano di rado, durante i test automatizzati che di solito lavorano (stiamo vedendo uno di questi fallimenti per centinaia di esecuzioni).
Vale la pena ricordare che stiamo archiviando anche molti dati, nell'ordine di centinaia di megabyte.
Risulta che i test automatici memorizzano solo alcuni megabyte, quindi non è una questione di dimensioni.
Qualcun altro ha sperimentato (o meglio ancora, con esperienza e risolto!) Questo problema?
Grazie - ma è successo in prod con una sola scheda in una singola istanza del browser. –