plugin-ruby icon indicating copy to clipboard operation
plugin-ruby copied to clipboard

JSON parse related `SyntaxError` sporadically during `spawnServer`

Open sam-perez opened this issue 4 months ago • 0 comments

Image

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?

sam-perez avatar Oct 14 '25 20:10 sam-perez