Skip to content

Commit d2828e2

Browse files
committed
fix: add terminate() before process.exit
1 parent 0043fec commit d2828e2

File tree

4 files changed

+36
-22
lines changed

4 files changed

+36
-22
lines changed

lib/addNewMask.js

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// ↓ Should be imported first
2-
require('@codefresh-io/cf-telemetry/init');
2+
const { terminate } = require('@codefresh-io/cf-telemetry/init');
33
// ↓ Keep one blank line below to prevent automatic import reordering
44

55
const { Logger } = require('@codefresh-io/cf-telemetry/logs');
@@ -43,28 +43,34 @@ async function updateMasks(secret) {
4343
if (response.statusCode === 201) {
4444
logger.log(`successfully updated masks with secret: ${secret.key}`);
4545
exitWithError = false;
46+
await terminate();
4647
process.exit(exitCodes.success);
4748
} else {
4849
logger.error(`could not create mask for secret: ${secret.key}. Server responded with: ${response.statusCode}\n\n${response.body}`);
50+
await terminate();
4951
process.exit(exitCodes.error);
5052
}
5153
} catch (error) {
5254
logger.error(`could not create mask for secret: ${secret.key}. Error: ${error}`);
55+
await terminate();
5356
process.exit(exitCodes.error);
5457
}
5558
}
5659

5760
if (require.main === module) {
5861
registerExitHandlers();
5962

60-
// first argument is the secret key second argument is the secret value
61-
if (process.argv.length < 4) {
62-
logger.log('not enough arguments, need secret key and secret value');
63-
process.exit(exitCodes.missingArguments);
64-
}
65-
const key = process.argv[2];
66-
const value = process.argv[3];
67-
updateMasks({ key, value });
63+
(async () => {
64+
// first argument is the secret key second argument is the secret value
65+
if (process.argv.length < 4) {
66+
logger.log('not enough arguments, need secret key and secret value');
67+
await terminate();
68+
process.exit(exitCodes.missingArguments);
69+
}
70+
const key = process.argv[2];
71+
const value = process.argv[3];
72+
await updateMasks({ key, value });
73+
})();
6874
} else {
6975
module.exports = { updateMasks, exitHandler };
7076
}

lib/index.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,6 @@ const logger = new Logger({
3232
showProgress: process.env.SHOW_PROGRESS === 'true',
3333
});
3434

35-
logger.validate();
36-
logger.start();
37-
3835
process.on('beforeExit', (code) => {
3936
logs.log(`beforeExit: ${code}`);
4037
logger.state.beforeExitCode = code;
@@ -59,3 +56,8 @@ process.on('unhandledRejection', (reason) => {
5956
logger.state.unhandledRejection = reason;
6057
logger._writeNewState();
6158
});
59+
60+
(async () => {
61+
await logger.validate();
62+
logger.start();
63+
})();

lib/isReady.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// ↓ Should be imported first
2-
require('@codefresh-io/cf-telemetry/init');
2+
const { terminate } = require('@codefresh-io/cf-telemetry/init');
33
// ↓ Keep one blank line below to prevent automatic import reordering
44

55
const { readFileSync } = require('fs');
@@ -31,7 +31,7 @@ function isContainerLoggerReady(state) {
3131
return isReady;
3232
}
3333

34-
(() => {
34+
(async () => {
3535
const containerId = process.argv[2];
3636
const state = JSON.parse(readFileSync('./lib/state.json').toString('utf-8'));
3737
let isReady = false;
@@ -41,5 +41,6 @@ function isContainerLoggerReady(state) {
4141
isReady = isContainerLoggerReady(state);
4242
}
4343

44+
await terminate();
4445
process.exit(isReady ? 0 : 1);
4546
})();

lib/logger.js

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
// ↓ Should be imported first
2+
const { terminate } = require('@codefresh-io/cf-telemetry/init');
3+
// ↓ Keep one blank line below to prevent automatic import reordering
4+
15
const fs = require('fs');
26
const { EventEmitter } = require('events');
37
const _ = require('lodash');
@@ -64,12 +68,12 @@ class Logger {
6468
* validates the passed params of the constructor
6569
* @returns {*}
6670
*/
67-
validate() {
71+
async validate() {
6872
if (!this.taskLoggerConfig) {
69-
return this._error(new CFError('taskLogger configuration is missing'));
73+
return await this._error(new CFError('taskLogger configuration is missing'));
7074
}
7175
if (!this.loggerId) {
72-
return this._error(new CFError('logger id is missing'));
76+
return await this._error(new CFError('logger id is missing'));
7377
}
7478
return undefined;
7579
}
@@ -120,8 +124,8 @@ class Logger {
120124
this._listenForExistingContainers();
121125
}
122126
})
123-
.catch((err) => {
124-
this._error(new CFError({
127+
.catch(async (err) => {
128+
await this._error(new CFError({
125129
cause: err,
126130
message: `Failed to create taskLogger`
127131
}));
@@ -149,8 +153,9 @@ class Logger {
149153
* will print the error and exit the process
150154
* @param err
151155
*/
152-
_error(err) {
156+
async _error(err) {
153157
logger.error(err.toString());
158+
await terminate();
154159
process.exit(1);
155160
}
156161

@@ -344,9 +349,9 @@ class Logger {
344349
*/
345350
_listenForExistingContainers() {
346351
logger.info(`Finding existing containers to listen on`);
347-
this.docker.listContainers((err, containers) => {
352+
this.docker.listContainers(async (err, containers) => {
348353
if (err) {
349-
this._error(new CFError({
354+
await this._error(new CFError({
350355
cause: err,
351356
message: `Query of existing containers failed`
352357
}));

0 commit comments

Comments
 (0)