From d88f2ea4c3ff72817df3e4dbd616163737293bbf Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Fri, 11 Feb 2022 21:14:47 +0100 Subject: [PATCH] fix: More error handling in proxy configuration + cleanups --- src/lib/database/applications.ts | 2 +- src/lib/database/checks.ts | 2 +- src/lib/database/databases.ts | 9 --------- src/lib/database/destinations.ts | 4 ++-- src/lib/database/gitSources.ts | 2 +- src/lib/database/github.ts | 2 +- src/lib/database/gitlab.ts | 2 +- src/lib/database/logs.ts | 4 ++-- src/lib/database/secrets.ts | 2 +- src/lib/database/services.ts | 3 +-- src/lib/database/teams.ts | 2 +- src/lib/database/users.ts | 4 ++-- src/lib/queues/builder.ts | 30 +++++++++++++++++------------- 13 files changed, 31 insertions(+), 37 deletions(-) diff --git a/src/lib/database/applications.ts b/src/lib/database/applications.ts index 037334873..ece44bffa 100644 --- a/src/lib/database/applications.ts +++ b/src/lib/database/applications.ts @@ -1,6 +1,6 @@ import { decrypt, encrypt } from '$lib/crypto'; import { removeProxyConfiguration } from '$lib/haproxy'; -import { asyncExecShell, getEngine, removeContainer } from '$lib/common'; +import { asyncExecShell, getEngine } from '$lib/common'; import { getDomain, removeDestinationDocker } from '$lib/common'; import { prisma } from './common'; diff --git a/src/lib/database/checks.ts b/src/lib/database/checks.ts index 884c6d2bd..38ddc96b9 100644 --- a/src/lib/database/checks.ts +++ b/src/lib/database/checks.ts @@ -1,5 +1,5 @@ import { getDomain } from '$lib/common'; -import { prisma, PrismaErrorHandler } from './common'; +import { prisma } from './common'; export async function isBranchAlreadyUsed({ repository, branch, id }) { const application = await prisma.application.findUnique({ diff --git a/src/lib/database/databases.ts b/src/lib/database/databases.ts index 00afa4827..6ca187ffb 100644 --- a/src/lib/database/databases.ts +++ b/src/lib/database/databases.ts @@ -114,15 +114,6 @@ export async function updateDatabase({ }); } -// export async function setDatabaseSettings({ id, isPublic }) { -// try { -// await prisma.databaseSettings.update({ where: { databaseId: id }, data: { isPublic } }) -// return { status: 201 } -// } catch (e) { -// throw PrismaErrorHandler(e) -// } -// } - export async function stopDatabase(database) { let everStarted = false; const { diff --git a/src/lib/database/destinations.ts b/src/lib/database/destinations.ts index a55fba52f..4a8c46ef9 100644 --- a/src/lib/database/destinations.ts +++ b/src/lib/database/destinations.ts @@ -1,8 +1,8 @@ import { asyncExecShell, getEngine } from '$lib/common'; import { dockerInstance } from '$lib/docker'; -import { defaultProxyImageHttp, defaultProxyImageTcp, startCoolifyProxy } from '$lib/haproxy'; +import { startCoolifyProxy } from '$lib/haproxy'; import { getDatabaseImage } from '.'; -import { prisma, PrismaErrorHandler } from './common'; +import { prisma } from './common'; export async function listDestinations(teamId) { return await prisma.destinationDocker.findMany({ where: { teams: { some: { id: teamId } } } }); diff --git a/src/lib/database/gitSources.ts b/src/lib/database/gitSources.ts index b2f43a092..927907964 100644 --- a/src/lib/database/gitSources.ts +++ b/src/lib/database/gitSources.ts @@ -1,5 +1,5 @@ import { decrypt, encrypt } from '$lib/crypto'; -import { prisma, PrismaErrorHandler } from './common'; +import { prisma } from './common'; export async function listSources(teamId) { return await prisma.gitSource.findMany({ diff --git a/src/lib/database/github.ts b/src/lib/database/github.ts index 46f57159f..339b8e008 100644 --- a/src/lib/database/github.ts +++ b/src/lib/database/github.ts @@ -1,5 +1,5 @@ import { decrypt, encrypt } from '$lib/crypto'; -import { prisma, PrismaErrorHandler } from './common'; +import { prisma } from './common'; export async function addInstallation({ gitSourceId, installation_id }) { const source = await prisma.gitSource.findUnique({ diff --git a/src/lib/database/gitlab.ts b/src/lib/database/gitlab.ts index e8020794b..eb9bdfb1b 100644 --- a/src/lib/database/gitlab.ts +++ b/src/lib/database/gitlab.ts @@ -1,5 +1,5 @@ import { encrypt } from '$lib/crypto'; -import { generateSshKeyPair, prisma, PrismaErrorHandler } from './common'; +import { generateSshKeyPair, prisma } from './common'; export async function updateDeployKey({ id, deployKeyId }) { const application = await prisma.application.findUnique({ diff --git a/src/lib/database/logs.ts b/src/lib/database/logs.ts index e4dd7a3e6..0b92654b7 100644 --- a/src/lib/database/logs.ts +++ b/src/lib/database/logs.ts @@ -7,7 +7,7 @@ export async function listLogs({ buildId, last = 0 }) { orderBy: { time: 'asc' } }); return [...body]; - } catch (e) { - throw PrismaErrorHandler(e); + } catch (error) { + return PrismaErrorHandler(error); } } diff --git a/src/lib/database/secrets.ts b/src/lib/database/secrets.ts index 06f6592b2..c03ec9459 100644 --- a/src/lib/database/secrets.ts +++ b/src/lib/database/secrets.ts @@ -1,5 +1,5 @@ import { encrypt } from '$lib/crypto'; -import { prisma, PrismaErrorHandler } from './common'; +import { prisma } from './common'; export async function listSecrets({ applicationId }) { return await prisma.secret.findMany({ diff --git a/src/lib/database/services.ts b/src/lib/database/services.ts index 61cf70316..5568cd4a7 100644 --- a/src/lib/database/services.ts +++ b/src/lib/database/services.ts @@ -1,8 +1,7 @@ import { decrypt, encrypt } from '$lib/crypto'; -import { dockerInstance } from '$lib/docker'; import cuid from 'cuid'; import { generatePassword } from '.'; -import { prisma, PrismaErrorHandler } from './common'; +import { prisma } from './common'; export async function listServices(teamId) { return await prisma.service.findMany({ where: { teams: { some: { id: teamId } } } }); diff --git a/src/lib/database/teams.ts b/src/lib/database/teams.ts index 3e1cf9928..dd9a14cff 100644 --- a/src/lib/database/teams.ts +++ b/src/lib/database/teams.ts @@ -1,4 +1,4 @@ -import { prisma, PrismaErrorHandler } from './common'; +import { prisma } from './common'; export async function listTeams() { return await prisma.team.findMany(); diff --git a/src/lib/database/users.ts b/src/lib/database/users.ts index 663ede1a4..7b15ff4d2 100644 --- a/src/lib/database/users.ts +++ b/src/lib/database/users.ts @@ -1,8 +1,8 @@ import cuid from 'cuid'; import bcrypt from 'bcrypt'; -import { prisma, PrismaErrorHandler } from './common'; -import { asyncExecShell, removeContainer, uniqueName } from '$lib/common'; +import { prisma } from './common'; +import { asyncExecShell, uniqueName } from '$lib/common'; import * as db from '$lib/database'; import { startCoolifyProxy } from '$lib/haproxy'; diff --git a/src/lib/queues/builder.ts b/src/lib/queues/builder.ts index 9430e786e..aba494d92 100644 --- a/src/lib/queues/builder.ts +++ b/src/lib/queues/builder.ts @@ -7,6 +7,7 @@ import { asyncExecShell, createDirectories, getDomain, getEngine, saveBuildLog } import { configureProxyForApplication, reloadHaproxy } from '../haproxy'; import * as db from '$lib/database'; import { decrypt } from '$lib/crypto'; +import { sentry } from '$lib/common'; import { copyBaseConfigurationFiles, makeLabelForStandaloneApplication, @@ -246,19 +247,22 @@ export default async function (job) { } catch (error) { throw new Error(error); } - - if (destinationDockerId && destinationDocker.isCoolifyProxyUsed) { - saveBuildLog({ line: 'Proxy configuration started!', buildId, applicationId }); - await configureProxyForApplication({ domain, imageId, applicationId, port }); - if (isHttps) await letsEncrypt({ domain, id: applicationId }); - await reloadHaproxy(destinationDocker.engine); - saveBuildLog({ line: 'Proxy configuration successful!', buildId, applicationId }); - } else { - saveBuildLog({ - line: 'Coolify Proxy is not configured for this destination. Nothing else to do.', - buildId, - applicationId - }); + try { + if (destinationDockerId && destinationDocker.isCoolifyProxyUsed) { + saveBuildLog({ line: 'Proxy configuration started!', buildId, applicationId }); + await configureProxyForApplication({ domain, imageId, applicationId, port }); + if (isHttps) await letsEncrypt({ domain, id: applicationId }); + await reloadHaproxy(destinationDocker.engine); + saveBuildLog({ line: 'Proxy configuration successful!', buildId, applicationId }); + } else { + saveBuildLog({ + line: 'Coolify Proxy is not configured for this destination. Nothing else to do.', + buildId, + applicationId + }); + } + } catch (error) { + sentry.captureException(error); } } }