diff --git a/packages/backend-core/src/db/errors.ts b/packages/backend-core/src/db/errors.ts new file mode 100644 index 0000000000..17f76c667b --- /dev/null +++ b/packages/backend-core/src/db/errors.ts @@ -0,0 +1,14 @@ +export function checkErrorCode(error: any, code: number) { + const stringCode = code.toString() + if (typeof error === "object") { + return error.status === code || error.message?.includes(stringCode) + } else if (typeof error === "number") { + return error === code + } else if (typeof error === "string") { + return error.includes(stringCode) + } +} + +export function isDocumentConflictError(error: any) { + return checkErrorCode(error, 409) +} diff --git a/packages/backend-core/src/db/index.ts b/packages/backend-core/src/db/index.ts index cf71199ecf..c47d1793dc 100644 --- a/packages/backend-core/src/db/index.ts +++ b/packages/backend-core/src/db/index.ts @@ -9,3 +9,4 @@ export * from "../constants/db" export { getGlobalDBName, baseGlobalDBName } from "../context" export * from "./lucene" export * as searchIndexes from "./searchIndexes" +export * from "./errors" diff --git a/packages/backend-core/src/logging/alerts.ts b/packages/backend-core/src/logging/alerts.ts index 625ecfcf15..b7173bc436 100644 --- a/packages/backend-core/src/logging/alerts.ts +++ b/packages/backend-core/src/logging/alerts.ts @@ -21,6 +21,6 @@ export function logAlertWithInfo( logAlert(message, error) } -export function logWarn(message: string) { - console.warn(`bb-warn: ${message}`) +export function logWarn(message: string, e?: any) { + console.warn(`bb-warn: ${message}`, e) } diff --git a/packages/server/src/sdk/app/applications/sync.ts b/packages/server/src/sdk/app/applications/sync.ts index d0a1d78428..d8807251a1 100644 --- a/packages/server/src/sdk/app/applications/sync.ts +++ b/packages/server/src/sdk/app/applications/sync.ts @@ -1,12 +1,5 @@ import env from "../../../environment" -import { - db as dbCore, - context, - docUpdates, - constants, - logging, - roles, -} from "@budibase/backend-core" +import { db as dbCore, context, logging, roles } from "@budibase/backend-core" import { User, ContextUser, UserGroup } from "@budibase/types" import { sdk as proSdk } from "@budibase/pro" import sdk from "../../" @@ -107,9 +100,11 @@ export async function syncUsersToAllApps(userIds: string[]) { } const resp = await Promise.allSettled(promises) const failed = resp.filter(promise => promise.status === "rejected") - if (failed.length > 0) { - const reasons = failed.map(fail => (fail as PromiseRejectedResult).reason) - logging.logAlert("Failed to sync users to apps", reasons) + const reasons = failed + .map(fail => (fail as PromiseRejectedResult).reason) + .filter(reason => !dbCore.isDocumentConflictError(reason)) + if (reasons.length > 0) { + logging.logWarn("Failed to sync users to apps", reasons) } }