-
Notifications
You must be signed in to change notification settings - Fork 359
Fix project settings file getting corrupted #652
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
Fix project settings file getting corrupted #652
Conversation
927be77
to
6fbc663
Compare
As reported here, this fix fails sometimes so I'll draft the pull request until I find a better solution |
The settings file gets written multiple times with every domain reload/compile, even when settings didn't change. I added an extra check to skip file write if settings didn't change since last read. |
Hello @a-maurice @chkuang-g and team |
We'd love to have this incorporated - this is a very annoying issue. |
really can non one review this and get it merged in? This issue has been going on for years and makes working with this very annoying and tedious |
I tested this pull request and my findings are at #524 (comment) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this pull looks good to me, aside from the one change I requested.
That said, I'm not affiliated with Google in any way.
Hi! I still got settings corruption with your version. However I think I found the source of the problem and a fix here #678. |
I guess this is no longer needed since #678 was merged 🎉 |
Why this change?
This resolve the settings file corruption as described in #524
Even though reading and writing of the settings file is protected by a lock, it is possible (due to domain reload) that 2 separate running processes are trying to access the file at the same time so the lock in one process is not aware of the other process.
A scenario like this could happen.
What did I do?
I made the writing happen to a temporary file. When the writing is complete, copy the temp file to the target path. This avoids the file being in an "invalid state" for a short time during the writing.
Review
Feedback is greatly appreciated and please let me know which steps I need to take to make my change release-ready.