ファイル保存後、一時的に操作を受け付けなくなる

問題の報告と質問

このところ、ファイル保存後に数秒間、編集操作を断続的に受け付けなくなる状態に悩まされています。
ファイルを更新して保存(Cmd+S押下)すると、1秒弱ほど経った後、「キャレットが動かない」「キー入力を受け付けない」という状態が1秒程度あり、その後、一瞬元に戻り、また受け付けなくなる、という動作を数回繰り返した後、通常の状態に戻ります。

ver 4.4.0 以降で気になるようになった印象がありますが、正しくないかも知れません。

なお、コンソールにはエラーなど出ていません。

こちらの操作等で改善を試みられることがあれば教えてください。

利用環境

  • Platform: macOS
  • Platform version: Catallina
  • App Version: 4.4.1

再現方法

ファイルを更新して保存する。

Horiiさん

お久しぶりです。ご報告ありがとうございます。
それは奇妙ですね。まず最近のアップデートで、保存の挙動周りの変更は特にありません。
自分の環境では特に起きていないため、環境依存か、アカウント依存の可能性があります。
最近追加したノートがすごく大きいとか、心当たりはありませんでしょうか?
メインプロセス側でなにかエラーが起きていないか、確認してみて下さい。以下のようにターミナルから起動すると、エラー時にログが出力されます:

/Applications/Inkdrop.app/Contents/MacOS/Inkdrop

確証はありませんが、怪しいなと思うのは全文検索のインデクシングに時間がかかっている事でしょうか。
その処理が毎回コケていて、ノートの更新が積もり積もっている・・といった可能性が思い浮かびます。
保存起因な事から、I/O周りの色が濃いですね。

リプライありがとうございます。

ターミナルからの起動でエラーは出ていないようです。

ノートはどれも結構小さい(100行のオーダ)ですが、インデクシングがうまくいっていないというのはあるかも知れませんね。
私は独自のCouchDBを使っているため、それがトラブルの原因になっているのかも知れません。
バックアップを取った上で、DBを再構築してみるなどもしてみます。

ターミナルに下記のメッセージは出ていました(保存する度に出力されます)。

Function provided here: browser-main.js:4:22123
Attempting to call a function in a renderer window that has been closed or released.
Function provided here: browser-commons.js:1:130685
Attempting to call a function in a renderer window that has been closed or released.

何か関連などありそうでしょうか?

ご確認ありがとうございます。
なるほど、ノートのサイズは問題なさそうですね。

おっと、そのログは怪しいですね。
すでにクローズされたウインドウのfunctionを呼び出そうとして失敗している様子です。
ウインドウを開いたり閉じたりすると再現するかもしれません。

手元でもウインドウを開いて閉じた後にノートを更新すると再現しました。
バグですね。修正します!

@anon93802403
こちらにパッチをビルドしました。ご確認下さい。

https://inkdrop-dist.s3-ap-northeast-1.amazonaws.com/tmp/Inkdrop-4.4.1-Mac-patch-1.zip

上記エラーログに関してはこれで解決すると思いますが、一時的なハング現象はいかがでしょうか。
そのハング現象は手元では再現しなかったので、それはまた別の原因である可能性が残っています。

リプライが遅くなってすみません。
パッチの作成、ありがとうございます。

先のコメントに記載していたエラーログは出なくなっていると思います。

残念ながら、一時的なハング現象は引き続き発生しています。
Private CouchDBの再構築を近日中に試せると思いますので、それで検証してみます。結果が分かりましたらこちらにポストします。

ご確認ありがとうございます。
なるほどー、では別の原因のようですね。
ローカルのデータベースの再構築ももしかすると効果があるかもしれません。
アプリを終了してから、以下のディレクトリを別の場所に移動して下さい:

~/Library/Application Support/inkdrop/db

そして再起動すると、イチから同期しはじめます。
ただし、この作業によって過去の編集履歴(Revision history)は失われますのでご注意下さい。

こちら、その後いかがでしょうか?
先程リリースしたv4.5.1にて、全文検索インデクシング処理の例外対策を少し行ってみました。

色々やってみたものの、残念ながら解消には至っていません。

開いているウィンドウの数が多くなると停止時間が長くなることが分かっています。
ウィンドウ1つの場合は僅かな停止時間で、特に気にならない程度ですが、5つ(現在はこのあたりが標準的な作業中でのウィンドウ数なのです)開いていると、保存時の断続的な停止が数秒続きます。

なるほど、ウインドウを沢山開いているときに発生する現象なのですね。
試しにメインウインドウを5つ開いて編集してみたところ、自分の環境でもたしかに保存時に少しカクつく現象を確認しました。
挙動から見て、保存にともなうUIの更新処理が重いのではないかと推測されます。
このあたりのボトルネックを解消すればハング現象を解決できるかもしれません。

なかなかウインドウを常時5つ開くことはないと思われますので、他のユーザさんから同様の報告が無いのも頷けます。

お待たせしました。
現象を分析したところ、ノートリストが表示されている時に顕著にハングが発生することに気づきました。
そこで、ノート保存時に発生していた無駄な再レンダリング処理を除去して効率化してみました。

https://inkdrop-dist.s3-ap-northeast-1.amazonaws.com/tmp/Inkdrop-4.5.1-Mac-patch-1.zip

こちらのパッチで解消することを期待します。

パッチのご提供、ありがとうございます!

早速試してみました。
残念ながら、件の現象は変わらず発生しているようです。

こちらでの調査などでご協力できることがあればお知らせください。

たびたびご確認ありがとうございます。
うーん変わりませんか。
またボトルネックを見つけたら修正してみます!

1 Like

こんにちは。
ノートリストのレンダリングにボトルネックを見つけました。
シンプルな一覧表示にするプラグインを作ったのですが、これでそのボトルネックが回避できます。
少しパフォーマンスが改善する筈ですので、お試し下さい〜

https://my.inkdrop.app/plugins/simple-note-list

新プラグイン、ありがとうございます!
少し改善しているようです。助かります。

一旦この状態で様子を見させていただくとして、本件はクローズいただいても良いかも知れません。

1 Like

お、よかったです!
ノート一覧のレンダリングが複雑で重いんですよね。
キャッシュするかなにか抜本的な解決案を模索したいと思います。
パフォーマンスを改善する良いきっかけになりました。
引き続き取り組んでいきますが、改善が見られたということで一旦クローズとしたいと思います。
また動作確認にご協力いただければ助かりますー!
いつもありがとうございます :smiley:

1 Like