Utilize the release callback returned by lockFileSync
to release the lock file (!239)
The error people are getting about a lock file already existing is due to `checkFileSync` returning false if the lock file is "stale". The default "stale" timeout is 10 seconds, so if a save takes longer than this, the user will end up in a state where they can no longer save. The documentation for `proper-lockfile` recommends using the callback returned by `lockFileSync` to remove the lock file, so I've switched to using this, and the error no longer occurs with long running save operations Co-authored-by: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com> Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/239 Co-authored-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com> Co-committed-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
This commit is contained in:
parent
0433308fa8
commit
4b8b62ae83
@ -175,7 +175,7 @@ export class VFS
|
||||
fs.writeFileSync(filepath, "");
|
||||
}
|
||||
|
||||
this.lockFileSync(filepath);
|
||||
const releaseCallback = this.lockFileSync(filepath);
|
||||
|
||||
if (!append && atomic)
|
||||
{
|
||||
@ -186,10 +186,7 @@ export class VFS
|
||||
fs.writeFileSync(filepath, data, options);
|
||||
}
|
||||
|
||||
if (this.checkFileSync(filepath))
|
||||
{
|
||||
this.unlockFileSync(filepath);
|
||||
}
|
||||
releaseCallback();
|
||||
}
|
||||
|
||||
public async writeFileAsync(filepath: any, data = "", append = false, atomic = true): Promise<void>
|
||||
@ -307,12 +304,12 @@ export class VFS
|
||||
await this.renamePromisify(oldPath, newPath);
|
||||
}
|
||||
|
||||
protected lockFileSync(filepath: any): void
|
||||
protected lockFileSync(filepath: any): () => void
|
||||
{
|
||||
lockfile.lockSync(filepath);
|
||||
return lockfile.lockSync(filepath);
|
||||
}
|
||||
|
||||
protected checkFileSync(filepath: any): any
|
||||
protected checkFileSync(filepath: any): boolean
|
||||
{
|
||||
return lockfile.checkSync(filepath);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user