Skip to content

Commit 91d568a

Browse files
committed
fix: prevent name collisions when launching multiple node-based servers on same node_modules
Before this change: if two (or more) node-based servers have been started on the same node_modules dir, the could override each others temporary port files, resulting in some of the servers not correctly launching. With this change: each server process makes sure to write distinct temporary and final files for transporting selected port number to the launching java process. This is a fixup for #2462. Refs: #2462, #2542
1 parent 34b5318 commit 91d568a

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,14 @@ function getInstanceId() {
3535

3636
var listener = app.listen(0, "127.0.0.1", () => {
3737
const instanceId = getInstanceId();
38+
const tempFileName = `server-${instanceId}.port.tmp`;
39+
const finalFileName = `server-${instanceId}.port`;
3840
debugLog("Server running on port " + listener.address().port + " for instance " + instanceId);
39-
fs.writeFile("server.port.tmp", "" + listener.address().port, function (err) {
41+
fs.writeFile(tempFileName, "" + listener.address().port, function (err) {
4042
if (err) {
4143
return console.log(err);
4244
} else {
43-
fs.rename("server.port.tmp", `server-${instanceId}.port`, function (err) {
45+
fs.rename(tempFileName, finalFileName, function (err) {
4446
if (err) {
4547
return console.log(err);
4648
}

0 commit comments

Comments
 (0)