refactor: 💡 Remove stack traces and add logs for version info (#2391)
This commit is contained in:
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);
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
}
|
||||
};
|
||||
|
||||
Reference in new issue
Block a user