vrtmrz / obsidian-livesync

MIT License
5.16k stars 167 forks source link

バージョンアップデート後、同期ができなくなった / No longer synchronisable after update version #517

Closed N0NAME743 closed 1 month ago

N0NAME743 commented 1 month ago

Abstract

これまでできていた複数端末間での同期が昨日(2024年10月18日)から同期できなくなった。

Expected behaviour

Actually happened

Logをみたところ、以下の文字列が頻繁に出現している

Reproducing procedure

※PC、Androidスマートフォン、タブレット、Linux等で利用しています。

  1. 利用端末においてファイル更新後、Github上にデータをPush
  2. 別の端末で「Git Clone」でリモートリポジトリ上のデータをクローン
  3. Obsidianを起動するとLive Syncの処理が始まります。 *これまではこの流れで複数端末間で同期ができたいのですが、現在は全く同期しなくなってしまいました。

Note: エラーの原因になったかもしれない操作等

Report materials

Report from the LiveSync

 2024-10-19T15:35:27.845 app[32871546f349e8] nrt [info] [error] 2024-10-19T15:35:27.844489Z nonode@nohost <0.1966.0> -------- rexi_server: from: nonode@nohost(<0.1964.0>) mfa: fabric_rpc:update_docs/3 exit:{{badmatch,{error,enospc}},[{couch_btree,write_node,3,[{file,"src/couch_btree.erl"},{line,483}]},{couch_btree,modify_node,4,[{file,"src/couch_btree.erl"},{line,449}]},{couch_btree,modify_kpnode,6,[{file,"src/couch_btree.erl"},{line,578}]},{couch_btree,modify_node,4,[{file,"src/couch_btree.erl"},{line,430}]},{couch_btree,query_modify,4,[{file,"src/couch_btree.erl"},{line,288}]},{couch_btree,add_remove,3,[{file,"src/couch_btree.erl"},{line,265}]},{couch_bt_engine,write_doc_infos,3,[{file,"src/couch_bt_engine.erl"},{line,485}]},{couch_db_engine,write_doc_infos,3,[{file,"src/couch_db_engine.erl"},{line,913}]}]} [{couch_db,collect_results,3,[{file,"src/couch_db.erl"},{line,1448}]},{couch_db,collect_results_with_metrics,3,[{file,"src/couch_db.erl"},{line,1430}]},{couch_db,write_and_commit,4,[{file,"src/couch_db.erl"},{line,1462}]},{couch_db,update_docs,4,[{file,"src/couch_db.erl"},{line,1392}]},{fabric_rpc,with_db,3,[{file,"src/fabric_rpc.erl"},{line,361}]},{rexi_server,init_p,3,[{file,"src/rexi_server.erl"},{line,146}]}] 

Obsidian debug info

Plug-in log

Plug-in log ``` 2024/10/19 21:17:42->Cache initialized 300 / 250000000000 2024/10/19 21:17:42->loading plugin 2024/10/19 21:17:42->Self-hosted LiveSync v0.23.23 0.23.23 2024/10/19 21:17:42->xxhash for plugin initialised 2024/10/19 21:17:42->Self-hosted LiveSyncにメジャーバージョンアップがありました。設定を開き、Information paneを確認してください 2024/10/19 21:17:42->Waiting for ready... 2024/10/19 21:17:42->Cache initialized 10 / 1000000000 2024/10/19 21:17:42->Cache initialized 300 / 50000000 2024/10/19 21:17:42->Newer xxhash has been initialised 2024/10/19 21:17:42->Opening Database... 2024/10/19 21:17:42->Database info 2024/10/19 21:17:42->{ "doc_count": 23253, "update_seq": 23791, "db_name": "KSnote-f1656735c175ed62-livesync-v2-indexeddb", "auto_compaction": false, "adapter": "indexeddb" } 2024/10/19 21:17:42->Database is now ready. 2024/10/19 21:17:47->Log window opened 2024/10/19 21:17:47->Opening the key-value database 2024/10/19 21:17:47->Initialize and checking database files 2024/10/19 21:17:47->Checking deleted files 2024/10/19 21:17:47->Collecting local files on the storage 2024/10/19 21:17:47->Collecting local files on the DB 2024/10/19 21:17:47->Collecting local files on the DB: 25 2024/10/19 21:17:47->Collecting local files on the DB: 50 2024/10/19 21:17:47->Collecting local files on the DB: 75 2024/10/19 21:17:47->Collecting local files on the DB: 100 2024/10/19 21:17:48->Collecting local files on the DB: 125 2024/10/19 21:17:48->Collecting local files on the DB: 150 2024/10/19 21:17:48->Collecting local files on the DB: 175 2024/10/19 21:17:48->Collecting local files on the DB: 200 2024/10/19 21:17:48->Collecting local files on the DB: 225 2024/10/19 21:17:48->Collecting local files on the DB: 250 2024/10/19 21:17:48->Collecting local files on the DB: 275 2024/10/19 21:17:48->Collecting local files on the DB: 300 2024/10/19 21:17:48->Collecting local files on the DB: 325 2024/10/19 21:17:48->Collecting local files on the DB: 350 2024/10/19 21:17:48->Collecting local files on the DB: 375 2024/10/19 21:17:48->Collecting local files on the DB: 400 2024/10/19 21:17:48->Collecting local files on the DB: 425 2024/10/19 21:17:48->Collecting local files on the DB: 450 2024/10/19 21:17:48->Collecting local files on the DB: 475 2024/10/19 21:17:48->Collecting local files on the DB: 500 2024/10/19 21:17:48->Collecting local files on the DB: 525 2024/10/19 21:17:48->Collecting local files on the DB: 550 2024/10/19 21:17:48->Collecting local files on the DB: 575 2024/10/19 21:17:48->Collecting local files on the DB: 600 2024/10/19 21:17:48->Collecting local files on the DB: 625 2024/10/19 21:17:48->Collecting local files on the DB: 650 2024/10/19 21:17:48->Collecting local files on the DB: 675 2024/10/19 21:17:48->Collecting local files on the DB: 700 2024/10/19 21:17:48->Collecting local files on the DB: 725 2024/10/19 21:17:48->Collecting local files on the DB: 750 2024/10/19 21:17:48->Collecting local files on the DB: 775 2024/10/19 21:17:48->Collecting local files on the DB: 800 2024/10/19 21:17:48->Collecting local files on the DB: 825 2024/10/19 21:17:48->Collecting local files on the DB: 850 2024/10/19 21:17:48->Collecting local files on the DB: 875 2024/10/19 21:17:48->Collecting local files on the DB: 900 2024/10/19 21:17:48->Collecting local files on the DB: 925 2024/10/19 21:17:48->Total files in the database: 928 2024/10/19 21:17:48->Total files in the storage: 928 2024/10/19 21:17:48->Total files: 928 2024/10/19 21:17:48->Files exist only in storage: 0 2024/10/19 21:17:48->Files exist only in database: 0 2024/10/19 21:17:48->Files exist both in storage and database: 928 2024/10/19 21:17:48->Synchronising... 2024/10/19 21:17:48->UPDATE DATABASE: Nothing to do 2024/10/19 21:17:48->UPDATE STORAGE: Nothing to do 2024/10/19 21:17:48->SYNC DATABASE AND STORAGE 2024/10/19 21:17:48->SYNC DATABASE AND STORAGE: DONE:10, FAILED:0, LAST:917 2024/10/19 21:17:48->Initialized, NOW TRACKING! 2024/10/19 21:17:48->Cache initialized 300 / 50000000 2024/10/19 21:17:48->Modifying callback of the save command 2024/10/19 21:17:48->Additional safety scan.. 2024/10/19 21:17:48->Checking storage sizes 2024/10/19 21:17:48->SYNC DATABASE AND STORAGE All done: DONE:928, FAILED:0 2024/10/19 21:17:48->Before LiveSync, start OneShot once... 2024/10/19 21:17:48->OneShot Sync begin... (pullOnly) 2024/10/19 21:17:49->There are no conflicted files 2024/10/19 21:17:49->Additional safety scan done 2024/10/19 21:17:50->The request may have failed. The reason sent by the server: 500: 2024/10/19 21:17:50->{"error":"error","reason":"internal_server_error"} 2024/10/19 21:18:30->Log window opened 2024/10/19 21:18:30->Chunks saved (with fixed): doc: Daily/2024-10-17.md ,chunks: 33 (new:23, recycled:8, cached:2) 2024/10/19 21:18:30->STORAGE -> DB (plain) Daily/2024-10-17.md ```

Network log

Screenshots

Other information, insights and intuition.

ホスティングサービスはFly.ioを利用しています、 データ自体はGitHub上で管理ができていますので、最悪現在のデータベース上の内容がなくなったとしても、従来通りに同期できる状態になってくれればと思っています。 この場合は、新規にデータベースを作り直したほうが早いものでしょうか。 その他で実施すべき手順に対して、なにかアドバイス等をもらえたら幸いです。 上記内容に対して、不足情報等ありましたら、ご指摘願います。

N0NAME743 commented 1 month ago

*追記 Live Syncのログをみたところ、ストレージがいっぱいとの記述が見受けられたので、データベースを確認したら2GBを超えていて、それが原因のようでした。(容量を削除したところ、以前のように同期がされました) ただ、なぜここまでデータが肥大化していたのかが、よくわからずじまいでした。。 起動時の動作をみた感じ余計なファイル等も同期されているようなので、Gitのプラグインの動作などが影響をしているようにもみえるのですが、あまり詳しいことはわからずじまいでした… とはいえ、ひとまず同期はできるようになりましたので、これで様子見を見てみたいと思っています。

vrtmrz commented 1 month ago

お返事が遅れました!CouchDBのログもありがとうございます! ストレージフルがおそらく原因であってて、 error,enospc の部分もその意味です。

Self-hosted LiveSyncは、一度作成されたデータを基本的に削除しないため、放っておくとどんどんストレージを食っていくようになっています。そのため、微妙に変更されたデータが貯まると、こうなってしまいます。

これを避けるにはすでに参照されていないデータを定期的に削除する必要があるのですが、実際それを行うより、Rebuild Everythingで、クリーンな状態まで戻す方が早いという現実があったりなどで、結局GCの実装には至っていません。

一応、機能として一定サイズに到達しそうになったら「リビルドする?」と聞いてくる機能があります。 ("Notify when the estimated remote storage size exceeds on start up" です) これを1とかにしておくと、100MB増えるごとに、もう100MB先でもう一度警告するか、今リビルドするかを選べるようになるので、一度お試し下さい。v0.24.0でもう少し親切になります。

参考情報なのですが、サーバに同サイズのDBを作る事ができればサーバ上でコピーGCできるのですが、fly.io等では、使える容量が半分になってしまうので、これはこれで結構なデメリットかなと思ってます。削除歴も同期するという動作上、Mark & Sweepのようなアルゴリズムでは十分に削除できず…

N0NAME743 commented 1 month ago

お返事遅くなりまして、申し訳ありません。 お忙しい中お返事していただきまして、ありがとうございました。

先日の追記で同期が再びできるようになったとの記述をさせていただきましたが、やはり以前のようにはうまくいっておらず何らかの不具合が起きているような挙動になっていると感じています(具体的にどこがどうおかしいのかといった説明が難しく、曖昧な表現で申し訳ありません)。おそらくですが、一番の原因は「Git」関連のファイルも同期させてしまっているので、そのあたりが悪さをしているように感じています。 ただ、平日はまとまった時間をとるのが難しい為、ひとまずは現状のままいこうと思っております。

一応、機能として一定サイズに到達しそうになったら「リビルドする?」と聞いてくる機能があります。 ("Notify when the estimated remote storage size exceeds on start up" です) これを1とかにしておくと、100MB増えるごとに、もう100MB先でもう一度警告するか、今リビルドするかを選べるようになるので、一度お試し下さい。v0.24.0でもう少し親切になります。

アドバイスいただいたこちらの設定なども試してみようと思っています。

また何か判明した際などは、質問させていただくことになるかと思いますので、その際はお手数ですがご相談にのっていただけますと幸いです。よろしくお願いいたします。

N0NAME743 commented 1 month ago

お世話になっております。 少し時間ができましたので再度試してみたところ、無事に従来通りの同期ができるようになりました。結果として、当方の設定の見落としもあるかと思いますが、Gitプラグイン関連のファイルが影響し、LiveSyncの同期に時間がかかる、あるいはエラーが発生しているようでした。そのため、Gitプラグインを削除し、Self-hosted LiveSyncも一から再構築した結果、問題なく同期されるようになりました。 Gitはプラグインとしての使用は難しい状況ですが、手動での利用は問題なく行えていますので、しばらくはこの状態で様子を見ていきたいと考えています。お騒がせいたしました。 素晴らしいプラグインを開発してくださり、ありがとうございます。今後のアップデートも楽しみにしておりますので、引き続き頑張ってください。陰ながら応援しております。