diff --git a/.gitignore b/.gitignore index 654b483288..45bfe8b4c4 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ builder/* packages/server/runtime_apps/ .idea/ bb-airgapped.tar.gz +*.iml # Logs logs diff --git a/lerna.json b/lerna.json index ec42ee9798..17b8ec3cee 100644 --- a/lerna.json +++ b/lerna.json @@ -15,4 +15,4 @@ ] } } -} +} \ No newline at end of file diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json index 14385eacc7..316f6f65db 100644 --- a/packages/backend-core/package.json +++ b/packages/backend-core/package.json @@ -79,4 +79,4 @@ "typescript": "4.7.3" }, "gitHead": "d1836a898cab3f8ab80ee6d8f42be1a9eed7dcdc" -} +} \ No newline at end of file diff --git a/packages/backend-core/src/redis/redlock.ts b/packages/backend-core/src/redis/redlock.ts index 586302c9b1..54b2c0a8d1 100644 --- a/packages/backend-core/src/redis/redlock.ts +++ b/packages/backend-core/src/redis/redlock.ts @@ -13,6 +13,18 @@ const getClient = async (type: LockType): Promise => { } return noRetryRedlock } + case LockType.DEFAULT: { + if (!noRetryRedlock) { + noRetryRedlock = await newRedlock(OPTIONS.DEFAULT) + } + return noRetryRedlock + } + case LockType.DELAY_500: { + if (!noRetryRedlock) { + noRetryRedlock = await newRedlock(OPTIONS.DELAY_500) + } + return noRetryRedlock + } default: { throw new Error(`Could not get redlock client: ${type}`) } @@ -41,6 +53,9 @@ export const OPTIONS = { // see https://www.awsarchitectureblog.com/2015/03/backoff.html retryJitter: 100, // time in ms }, + DELAY_500: { + retryDelay: 500, + }, } export const newRedlock = async (opts: Options = {}) => { @@ -55,19 +70,17 @@ export const doWithLock = async (opts: LockOptions, task: any) => { let lock try { // aquire lock - let name: string - if (opts.systemLock) { - name = opts.name - } else { - name = `${tenancy.getTenantId()}_${opts.name}` - } + let name: string = `lock:${tenancy.getTenantId()}_${opts.name}` if (opts.nameSuffix) { name = name + `_${opts.nameSuffix}` } lock = await redlock.lock(name, opts.ttl) // perform locked task - return task() + // need to await to ensure completion before unlocking + const result = await task() + return result } catch (e: any) { + console.log("lock error") // lock limit exceeded if (e.name === "LockError") { if (opts.type === LockType.TRY_ONCE) { diff --git a/packages/bbui/package.json b/packages/bbui/package.json index b57c3f62f0..6536f65dd5 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -89,4 +89,4 @@ "loader-utils": "1.4.1" }, "gitHead": "d1836a898cab3f8ab80ee6d8f42be1a9eed7dcdc" -} +} \ No newline at end of file diff --git a/packages/builder/package.json b/packages/builder/package.json index 65f29e6595..1ce40b1e6b 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -123,4 +123,4 @@ "vite": "^3.0.8" }, "gitHead": "115189f72a850bfb52b65ec61d932531bf327072" -} +} \ No newline at end of file diff --git a/packages/builder/src/components/automation/AutomationBuilder/FlowChart/FlowItem.svelte b/packages/builder/src/components/automation/AutomationBuilder/FlowChart/FlowItem.svelte index 2d0a86d95c..d6e5fcb36d 100644 --- a/packages/builder/src/components/automation/AutomationBuilder/FlowChart/FlowItem.svelte +++ b/packages/builder/src/components/automation/AutomationBuilder/FlowChart/FlowItem.svelte @@ -180,7 +180,7 @@ onSelect(block) }} > - + diff --git a/packages/builder/src/components/deploy/DeployModal.svelte b/packages/builder/src/components/deploy/DeployModal.svelte index 598f5cd17a..870091eb0e 100644 --- a/packages/builder/src/components/deploy/DeployModal.svelte +++ b/packages/builder/src/components/deploy/DeployModal.svelte @@ -12,7 +12,6 @@ import { ProgressCircle } from "@budibase/bbui" import CopyInput from "components/common/inputs/CopyInput.svelte" - let feedbackModal let publishModal let asyncModal let publishCompleteModal @@ -23,13 +22,13 @@ export let onOk - async function deployApp() { + async function publishApp() { try { //In Progress asyncModal.show() publishModal.hide() - published = await API.deployAppChanges() + published = await API.publishAppChanges($store.appId) if (typeof onOk === "function") { await onOk() @@ -56,20 +55,11 @@ - - - - {$organisation?.company || "Budibase"}
- + {#if $auth.user?.admin?.global} + + {/if}