1
0

chromium系ブラウザをアップデートしたら、IndexedDBでめっちゃブロックが発生するようになって困った

Last updated at Posted at 2023-08-05

開発中のウェブサービスで、ある時から、フリーズしたと思うくらい固まってしまう事案が発生。

Chromiumのコンソールを見ると、フロントエンドのストレージとして使ってるPouchDBの、destroyメソッドで止まっている模様。

エラーログを見てもブロックされている理由がよくわからないので、PouchDBのdestroyメソッドを使うのをやめて、IndexedDBを直に操作する方式に変えて、deleteDBに変更してみる。

しかーし、変えてみたけど、これもいっこうに非同期処理が返ってこない。

ブロックされる時間を計るために、ログにDateを仕込んで計測してみると、だいたい3分〜10分くらい。
不思議なのは10分以上にはならない。

いろいろ試してみたものの、今の所解決する方法がさっぱりわからない。

現在は回避策として、おとなしくuserAgentでlinuxを判別して、PouchDBを使ってdestroyメソッドは使わずIndexedDBのオブジェクトストア自体を消さずに、bulk updateでドキュメントをdeleteする処理に変更しました。これだとdeleteフラグが着いただけで、スッキリしないっちゃスッキリしない。

ですがlinux版は、このサービスのターゲットユーザーにはほぼいないと想定されるから、今の所はいいんじゃないでしょうか。

ちなみに、linux版以外のChromiumではこの箇所でブロックが発生しない模様。

追記 23.08.23
数日前ついにWindowsでも発生した模様。
しかーし、ある呪文を唱えることによって、解決したっぽい模様。

追記 23.09.27
ある呪文でその後ブロックが全然発生しなくなっているのと、なんだか意外とアクセス数があったので、これだけで結構な時間を費やしたけど呪文公開。

呪文というか、setTimeoutでdestroyにあたる処理をasyncで囲ったら、ブロックが発生しなくなりました。

追記 23.11.6
この方法でもブロック発生しているので、destroyやめました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0