fix: Show a more user friendly error message if initial Db connection times out (#10682)

This commit is contained in:
Tomi Turtiainen
2024-09-06 11:33:53 +03:00
committed by GitHub
parent 08abaf9eb2
commit 4efcbc5936
5 changed files with 53 additions and 3 deletions

View File

@@ -0,0 +1,14 @@
import { ApplicationError } from './application.error';
export type DbConnectionTimeoutErrorOpts = {
configuredTimeoutInMs: number;
cause: Error;
};
export class DbConnectionTimeoutError extends ApplicationError {
constructor(opts: DbConnectionTimeoutErrorOpts) {
const numberFormat = Intl.NumberFormat();
const errorMessage = `Could not establish database connection within the configured timeout of ${numberFormat.format(opts.configuredTimeoutInMs)} ms. Please ensure the database is configured correctly and the server is reachable. You can increase the timeout by setting the 'DB_POSTGRESDB_CONNECTION_TIMEOUT' environment variable.`;
super(errorMessage, { cause: opts.cause });
}
}

View File

@@ -0,0 +1,9 @@
/** Ensures `error` is an `Error */
export function ensureError(error: unknown): Error {
return error instanceof Error
? error
: new Error('Error that was not an instance of Error was thrown', {
// We should never throw anything except something that derives from Error
cause: error,
});
}

View File

@@ -16,3 +16,5 @@ export { TriggerCloseError } from './trigger-close.error';
export { NodeError } from './abstract/node.error';
export { ExecutionBaseError } from './abstract/execution-base.error';
export { ExpressionExtensionError } from './expression-extension.error';
export { DbConnectionTimeoutError } from './db-connection-timeout-error';
export { ensureError } from './ensure-error';