2012-05-04 23 views
5

FirefoxでIndexedDBを幅広く使用するアプリケーションを構築しています。indexedDBを使用しているときに、「要求されたデータベースオブジェクトが見つかりませんでした...」というエラーが発生しました。

これはよく、ほとんどの時間を動作しますが、時折、次のようなエラーで失敗します。

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)" 

コード内のさまざまな場所で失敗しているようです。ここで犯人の一つである:私のパズル

_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 

事が通常動作する自動テスト(私たちは処刑の何百もあたり、これらの障害の1を見ている)の間に、故障が頻繁に発生していることです。

数百メガバイトのオーダーで多くのデータを保存していることに言及することは重要です。 自動テストには数メガバイトしか格納されていないことが分かります。サイズは問題ありません。

他の誰かがこの問題を経験したことがありますか?

答えて

1

これはFirefoxのバグのようです。私はBug 751802 - Intermittent IndexedDB write failuresと私の同僚を募集しました。私はFirefoxの皆さんと協力してそれを再現するのに忙しいです。

当面は、回避策や修正はありません。ダンカンの答えを@に追加

0

これが発生したときに複数のタブが開いているかどうかを確認してください。そのうちの1つがsetVersion(古いAPI)またはonupgradedneeded(新しいAPI)にある場合、おそらくもう1つの問題が発生します。

デバッグするには、DBを開くときにonblocked(対onerror)のイベントを探していることを確認してください。

+0

おかげで - しかし、それは、単一のタブではprodに起こっています単一のブラウザインスタンスで実行されます。 –

関連する問題