restart: gracefully handle restart failure

In case Grist isn't running with the supervisor (e.g. it's running
under nodemon instead via `yarn start`), surface the problem to the
frontend.
This commit is contained in:
Jordi Gutiérrez Hermoso 2024-07-29 16:28:55 -04:00 committed by jordigh
parent 9ae8918156
commit 960f023618
2 changed files with 11 additions and 5 deletions

View File

@ -1886,10 +1886,15 @@ export class FlexServer implements GristServer {
process.send({ action: 'restart' }); process.send({ action: 'restart' });
} }
}); });
if(!process.env.GRIST_RUNNING_UNDER_SUPERVISOR) {
// On the topic of http response codes, thus spake MDN: // On the topic of http response codes, thus spake MDN:
// "409: This response is sent when a request conflicts with the current state of the server." // "409: This response is sent when a request conflicts with the current state of the server."
const status = process.send ? 200 : 409; return resp.status(409).send({
return resp.status(status).send(); error: "Cannot automatically restart the Grist server to enact changes. Please restart server manually."
});
}
return resp.status(200).send({ msg: 'ok' });
})); }));
// Restrict this endpoint to install admins // Restrict this endpoint to install admins

View File

@ -5,7 +5,8 @@ let grist;
function startGrist(newConfig={}) { function startGrist(newConfig={}) {
// H/T https://stackoverflow.com/a/36995148/11352427 // H/T https://stackoverflow.com/a/36995148/11352427
grist = spawn('./sandbox/run.sh', { grist = spawn('./sandbox/run.sh', {
stdio: ['inherit', 'inherit', 'inherit', 'ipc'] stdio: ['inherit', 'inherit', 'inherit', 'ipc'],
env: {...process.env, GRIST_RUNNING_UNDER_SUPERVISOR: true}
}); });
grist.on('message', function(data) { grist.on('message', function(data) {
if (data.action === 'restart') { if (data.action === 'restart') {