unity-jar-resolver icon indicating copy to clipboard operation
unity-jar-resolver copied to clipboard

Fix project settings file getting corrupted

Open AliAlbarrak opened this issue 1 year ago • 7 comments

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.

  1. Code in domain A will start writing to ProjectsSettings file
  2. Code in domain B will start reading the file
  3. If domain A didn't finish writing yet, domain B will encounter unexpected EOF
  4. Domain B will assume the file is broken and reset settings
  5. Domain B will write default settings to ProjectsSettings file

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.

AliAlbarrak avatar Nov 06 '23 05:11 AliAlbarrak