Skip to content

Commit

Permalink
Merge pull request #135 from internxt/fix/improve-pm2-management
Browse files Browse the repository at this point in the history
[_]: fix/improve-pm2-management
  • Loading branch information
larryrider authored Dec 13, 2024
2 parents 6a946f2 + b5f971e commit 20a02c5
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 40 deletions.
5 changes: 2 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"clean": "rimraf dist tsconfig.tsbuildinfo oclif.manifest.json",
"lint": "eslint .",
"pretty": "prettier --write **/*.{js,jsx,tsx,ts}",
"postpack": "shx rm -f oclif.manifest.json",
"postpack": "rimraf oclif.manifest.json",
"posttest": "yarn lint",
"prepack": "yarn build && oclif manifest && oclif readme",
"prepare": "husky || true",
Expand All @@ -20,7 +20,7 @@
"migrate:undo": "sequelize db:migrate:undo",
"publish:npm": "npm run build && npm publish --scope=@internxt --registry=https://registry.npmjs.org/ --access public",
"publish:github": "npm run build && npm publish --scope=@internxt --registry=https://npm.pkg.github.com",
"postinstall": "node ./scripts/skip-in-ci.js || internxt webdav restart"
"postinstall": "node ./scripts/skip-in-ci.js || node ./bin/run.js webdav restart"
},
"homepage": "https://github.com/internxt/cli",
"license": "MIT",
Expand Down Expand Up @@ -86,7 +86,6 @@
"prettier": "^3.4.2",
"rimraf": "^6.0.1",
"sequelize-cli": "^6.6.2",
"shx": "^0.3.4",
"ts-node": "^10.9.2",
"typescript": "^5.7.2",
"vitest": "^2.1.8",
Expand Down
10 changes: 4 additions & 6 deletions src/commands/webdav.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ export default class Webdav extends Command {

let message = '';
let success = true;
await PM2Utils.connect();
switch (args.action) {
case 'enable': {
message = await this.enableWebDav();
Expand Down Expand Up @@ -55,6 +56,7 @@ export default class Webdav extends Command {
break;
}
}
PM2Utils.disconnect();
return { success, message, action: args.action };
};

Expand All @@ -71,7 +73,6 @@ export default class Webdav extends Command {
private enableWebDav = async (): Promise<string> => {
CLIUtils.doing('Starting Internxt WebDav server...');
await DriveDatabaseManager.clean();
await PM2Utils.connect();
await PM2Utils.killWebDavServer();
await PM2Utils.startWebDavServer();
CLIUtils.done();
Expand All @@ -98,7 +99,6 @@ export default class Webdav extends Command {

private disableWebDav = async (): Promise<string> => {
CLIUtils.doing('Stopping Internxt WebDav server...');
await PM2Utils.connect();
await PM2Utils.killWebDavServer();
CLIUtils.done();
const message = 'Internxt WebDav server stopped successfully';
Expand All @@ -109,7 +109,6 @@ export default class Webdav extends Command {
private restartWebDav = async (): Promise<string> => {
CLIUtils.doing('Restarting Internxt WebDav server...');
await DriveDatabaseManager.clean();
await PM2Utils.connect();
const { status } = await PM2Utils.webdavServerStatus();
if (status === 'online') {
await PM2Utils.killWebDavServer();
Expand All @@ -120,14 +119,13 @@ export default class Webdav extends Command {
return message;
} else {
CLIUtils.done();
const message = 'Internxt WebDav server is not running, cannot restart';
CLIUtils.error(this.log.bind(this), message);
const message = 'Internxt WebDav server is not running, it wont be restarted';
CLIUtils.warning(this.log.bind(this), message);
return message;
}
};

private webDAVStatus = async (): Promise<string> => {
await PM2Utils.connect();
const { status } = await PM2Utils.webdavServerStatus();
const message = `Internxt WebDAV server status: ${status}`;
CLIUtils.log(this.log.bind(this), message);
Expand Down
34 changes: 34 additions & 0 deletions src/utils/pm2.utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,40 @@ export class PM2Utils {
});
}

static disconnect() {
pm2.disconnect();
}

// TODO: Use this once the issue with PM2 is resolved: https://github.com/Unitech/pm2/issues/4825
static async clean() {
const list = await this.list();
if (list.length === 0) {
// There are NOT other active processes. PM2 daemon can be killed.
return new Promise<void>((resolve, reject) => {
pm2.killDaemon((err) => {
if (err) {
reject(err);
} else {
resolve();
}
});
});
}
}

static list(): Promise<pm2.ProcessDescription[]> {
return new Promise((resolve, reject) => {
pm2.list((err, processes) => {
if (err) {
reject(err);
} else {
// There are active processes. PM2 daemon will not be killed.
resolve(processes);
}
});
});
}

static killWebDavServer() {
return new Promise<void>((resolve) => {
pm2.delete(this.WEBDAV_APP_NAME, () => {
Expand Down
33 changes: 2 additions & 31 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -4717,7 +4717,7 @@ glob@^11.0.0:
package-json-from-dist "^1.0.0"
path-scurry "^2.0.0"

glob@^7.0.0, glob@^7.1.3, glob@^7.1.4:
glob@^7.1.3, glob@^7.1.4:
version "7.2.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
Expand Down Expand Up @@ -5044,11 +5044,6 @@ internal-slot@^1.0.7:
hasown "^2.0.0"
side-channel "^1.0.4"

interpret@^1.0.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==

ip-address@^9.0.5:
version "9.0.5"
resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a"
Expand Down Expand Up @@ -6725,13 +6720,6 @@ readdirp@~3.6.0:
dependencies:
picomatch "^2.2.1"

rechoir@^0.6.2:
version "0.6.2"
resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==
dependencies:
resolve "^1.1.6"

reflect-metadata@^0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.2.2.tgz#400c845b6cba87a21f2c65c4aeb158f4fa4d9c5b"
Expand Down Expand Up @@ -6796,7 +6784,7 @@ resolve-from@^4.0.0:
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==

resolve@^1.1.6, resolve@^1.22.1:
resolve@^1.22.1:
version "1.22.8"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
Expand Down Expand Up @@ -7097,28 +7085,11 @@ shebang-regex@^3.0.0:
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==

shelljs@^0.8.5:
version "0.8.5"
resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c"
integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==
dependencies:
glob "^7.0.0"
interpret "^1.0.0"
rechoir "^0.6.2"

shimmer@^1.2.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337"
integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==

shx@^0.3.4:
version "0.3.4"
resolved "https://registry.yarnpkg.com/shx/-/shx-0.3.4.tgz#74289230b4b663979167f94e1935901406e40f02"
integrity sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==
dependencies:
minimist "^1.2.3"
shelljs "^0.8.5"

side-channel@^1.0.4, side-channel@^1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2"
Expand Down

0 comments on commit 20a02c5

Please sign in to comment.