-
Notifications
You must be signed in to change notification settings - Fork 298
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
設定ファイルの保存をアトミック操作にする #2082
Comments
@Hiroshiba
これは作るとしたら、 |
RikitoNoto
added a commit
to RikitoNoto/voicevox
that referenced
this issue
May 25, 2024
Merged
@RikitoNoto PRありがとうございます!!
そちらでも問題ないですが、今回の場合は使われる場所が(今のところ) |
Closed
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
内容
設定ファイルの保存はConfigManagerで行われていて、それはファイルに直接書き込む形で実装されています。
voicevox/src/backend/electron/electronConfig.ts
Lines 23 to 28 in 4c9550b
この操作は割と危なくて、何かしらの原因で途中で書き込みが中断してしまうことがあると、中途半端な値が保存されて設定ファイルが壊れます。
実際にそれが原因かもしれない不具合報告も見つかりました。
設定ファイルに関してはプリセットが保存されていたりとクリエイターにとって割と重要なポジションを占めるので、優先度ラベルを高めに設定しています。
Pros 良くなる点
バグが起こりにくくなる
実現方法
一度保存する先のパス+
.tmp
みたいなファイルに書き出した後、moveFile
でファイルを上書きすれば OK。moveFileの使い方はこんな感じ
voicevox/src/backend/electron/manager/vvppManager.ts
Line 283 in 4c9550b
その他
直接ファイルを書き込んでいるところはいくつかあるので、一度同じディレクトリの
.tmp
に書き込んだ後moveFileする便利関数を作って使いますと便利そう。処理としてはそんなに難しくないと思うのでぜひ気軽にコミットにチャレンジしてみてください!
The text was updated successfully, but these errors were encountered: