refactor: 💡 Remove stack traces and add logs for version info (#2391)

This commit is contained in:
Zhihe Li authored and GitHub committed 2024-07-16 17:51:16 -04:00
1 parent 9404300a9e
commit ec6ec7511e
12 files changed
+51 -30

No files matched your search

@@ -123,12 +123,15 @@ export default class CacheDaemonHandler {
);
} catch (err) {
// If it fails again just fall back to fetching controller data
__electronLog?.error('Failed to add token to daemons', err);
__electronLog?.error(
'Failed to add token to daemons',
err.message,
);
}
} else {
__electronLog?.error(
'Failed to search cache daemon; falling back to search controller',
e,
e.message,
);
return fetchControllerData(context, next);
@@ -100,12 +100,12 @@ export default class ScopesScopeProjectsRoute extends Route {
__electronLog?.info('Starting polling of new sessions again');
return;
} catch (e) {
__electronLog?.error('Failed to add token to daemons', e);
__electronLog?.error('Failed to add token to daemons', e.message);
// If it fails again, just let the poller be killed
}
}
__electronLog?.error('Failed to get new Sessions', e);
__electronLog?.error('Failed to get new Sessions', e.message);
if (this.job) {
this.flashMessages.danger(
this.intl.t('errors.client-agent-failed.sessions'),
@@ -41,7 +41,7 @@ export default class ScopesScopeProjectsSessionsSessionRoute extends Route {
} catch (e) {
__electronLog?.error(
'Failed to fetch credentials from client agent',
e,
e.message,
);
this.flashMessages.danger(
@@ -136,7 +136,7 @@ export default class ScopesScopeProjectsTargetsIndexRoute extends Route {
try {
await aliasPromise;
} catch (e) {
__electronLog?.warn('Could not retrieve aliases for targets', e);
__electronLog?.warn('Could not retrieve aliases for targets', e.message);
// Separately await and catch the error here so we can continue loading
// the page in case the controller doesn't support aliases yet
}
@@ -33,7 +33,7 @@ const returnArchitectureToUpdate = () => {
return 'arm64';
}
} catch (err) {
log.error(`returnArchitectureToUpdate: ${err}`);
log.error(`returnArchitectureToUpdate:`, err.message);
}
return nodeArchitecture;
};
@@ -60,7 +60,7 @@ const unixSocketRequest = (options, reqBody) =>
if (statusCode < 200 || statusCode >= 400) {
reject({
statusCode,
...parsedResponse,
message: parsedResponse?.api_error ?? parsedResponse?.error,
});
}
@@ -71,7 +71,7 @@ const unixSocketRequest = (options, reqBody) =>
path: options.path,
socketPath: options.socketPath,
})}):`,
e,
e.message,
);
reject(e);
+12 -1
View File
@@ -33,6 +33,8 @@ const menu = require('./config/menu.js');
const appUpdater = require('./helpers/app-updater.js');
const { isMac, isLinux, isWindows } = require('./helpers/platform.js');
const fixPath = require('./utils/fixPath');
const config = require('../config/config.js');
const { version } = require('./cli/index.js');
const isDev = require('electron-is-dev');
// Register the custom file protocol
@@ -60,11 +62,20 @@ fixPath();
log.initialize();
log.transports.console.level = false;
log.transports.file.format =
'[{y}-{m}-{d} {h}:{i}:{s}.{ms}{z}] [{level}] {text}';
'[{y}-{m}-{d}T{h}:{i}:{s}.{ms}{z}] [{level}] {text}';
log.transports.file.fileName = 'desktop-client.log';
// Set the max file size to 10MB
log.transports.file.maxSize = 10485760;
// Immediately log the version information
log.info(
`Boundary Desktop Client Version: ${config.releaseVersion} | Commit: ${config.releaseCommit}`,
);
const cliInfo = version();
log.info(
`Boundary CLI Version: ${cliInfo.versionNumber} | Commit: ${cliInfo.gitRevision}`,
);
if (isWindows()) {
// Set the app user model ID to the app name as it will display the ID
// in any notifications on windows unless a squirrel installation is used.
+6 -1
View File
@@ -156,7 +156,12 @@ handle('searchCacheDaemon', async (request) =>
* socket path as a proxy for whether the daemon is running.
*/
handle('isCacheDaemonRunning', async () => {
cacheDaemonManager.status();
try {
await cacheDaemonManager.status();
} catch (e) {
// There was likely an error connecting to the cache daemon.
return false;
}
return Boolean(cacheDaemonManager.socketPath);
});
@@ -11,6 +11,7 @@ const sanitizer = require('../utils/sanitizer.js');
const { isWindows } = require('../helpers/platform.js');
const treeKill = require('tree-kill');
const log = require('electron-log/main');
const generateErrorPromise = require('../utils/generateErrorPromise');
class CacheDaemonManager {
#socketPath;
@@ -23,15 +24,21 @@ class CacheDaemonManager {
/**
* Checks the status of the cache daemon.
* @returns {string}
* @returns {Promise}
*/
status() {
const daemonStatusCommand = ['cache', 'status', '-format=json'];
const { stdout } = spawnSync(daemonStatusCommand);
const { stdout, stderr } = spawnSync(daemonStatusCommand);
const status = jsonify(stdout);
this.#socketPath = status?.item?.socket_address;
return status;
const parsedResponse = jsonify(stdout);
this.#socketPath = parsedResponse?.item?.socket_address;
if (parsedResponse?.status_code === 200) {
return parsedResponse.item;
}
log.warn('Cache Daemon Status:', stderr);
return generateErrorPromise(stderr);
}
/**
@@ -106,11 +113,8 @@ class CacheDaemonManager {
return;
}
parsedResponse = jsonify(stderr);
return Promise.reject({
statusCode: parsedResponse?.status_code,
...parsedResponse?.api_error,
});
log.warn('Cache Daemon Add Token:', stderr);
return generateErrorPromise(stderr);
}
search(requestData) {
@@ -157,17 +161,12 @@ const searchCliCommand = (requestData) => {
return parsedResponse?.item;
}
parsedResponse = jsonify(stderr);
// Log request data and response, but clean up token from log
const requestCopy = { ...requestData };
delete requestData.token;
log.error(`searchCliCommand(${JSON.stringify(requestCopy)}):`, stderr);
return Promise.reject({
statusCode: parsedResponse?.status_code,
...parsedResponse?.api_error,
});
return generateErrorPromise(stderr);
};
// Export an instance so we get a singleton
@@ -6,6 +6,7 @@
const { spawnSync, spawn } = require('../helpers/spawn-promise');
const jsonify = require('../utils/jsonify.js');
const generateErrorPromise = require('../utils/generateErrorPromise');
const log = require('electron-log/main');
class ClientAgentDaemonManager {
/**
@@ -21,6 +22,7 @@ class ClientAgentDaemonManager {
return parsedResponse.item;
}
log.warn('Client Agent Status:', stderr);
return generateErrorPromise(stderr);
}
@@ -42,6 +44,7 @@ class ClientAgentDaemonManager {
return parsedResponse.items;
}
log.warn('Client Agent Sessions:', stderr);
return generateErrorPromise(stderr);
}
}
@@ -3,6 +3,7 @@
* SPDX-License-Identifier: MPL-2.0
*/
const jsonify = require('./jsonify');
const log = require('electron-log/main');
// Convert to json
const generateErrorPromise = async (stderr) => {
@@ -11,12 +12,12 @@ const generateErrorPromise = async (stderr) => {
if (parsedResponse?.status_code) {
return Promise.reject({
statusCode: parsedResponse?.status_code,
error: parsedResponse?.api_error,
message: parsedResponse?.api_error,
});
}
return Promise.reject({
error: parsedResponse?.error,
message: parsedResponse?.error,
});
};
@@ -11,7 +11,6 @@ const jsonify = (data) => {
try {
return JSON.parse(data);
} catch (e) {
log.warn('jsonify:', e);
// Ignore parse errors
}
};