plugin-ruby
plugin-ruby copied to clipboard
JSON parse related `SyntaxError` sporadically during `spawnServer`
Affected line of code:
return new Promise((resolve, reject) => {
const interval = setInterval(() => {
if (fs.existsSync(filepath)) {
const connectionJSON = fs.readFileSync(filepath).toString("utf-8");
resolve({
serverPID: server.pid,
connectionFilepath: filepath,
connectionOptions: JSON.parse(connectionJSON) \\ <----- OFFENDING LINE OF CODE
});
clearTimeout(timeout);
clearInterval(interval);
} else if (server.exitCode) {
reject(new Error("Failed to start parse server."));
clearTimeout(timeout);
clearInterval(interval);
}
}, 100);
I've been seeing this error pop up now and again. I was wondering, is there an actual race condition here between writing the file and reading the file? Is it possible that the file being written is only partially written, and if you read it at the wrong moment you will get this JSON parse error?
If so, then maybe the JSON parse error should be handled gracefully?