From 36b6d85c7ea354db964f91d3783bac9802cdbe7a Mon Sep 17 00:00:00 2001 From: Lakshan Perera Date: Tue, 3 Dec 2024 04:16:49 +1100 Subject: [PATCH 1/5] chore: added ephemeral storage guide (#30791) * chore: added ephemeral storage guide * add use cases section * remove word * Apply suggestions from code review Co-authored-by: Charis <26616127+charislam@users.noreply.github.com> * prettier --------- Co-authored-by: Charis <26616127+charislam@users.noreply.github.com> --- .../NavigationMenu.constants.ts | 4 ++ .../guides/functions/ephemeral-storage.mdx | 54 +++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 apps/docs/content/guides/functions/ephemeral-storage.mdx diff --git a/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts b/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts index 96ad2af0b610c..3f03268edb5ba 100644 --- a/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts +++ b/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts @@ -1272,6 +1272,10 @@ export const functions: NavMenuConstant = { name: 'Background Tasks', url: '/guides/functions/background-tasks', }, + { + name: 'Ephemeral Storage', + url: '/guides/functions/ephemeral-storage', + }, { name: 'Running AI Models', url: '/guides/functions/ai-models', diff --git a/apps/docs/content/guides/functions/ephemeral-storage.mdx b/apps/docs/content/guides/functions/ephemeral-storage.mdx new file mode 100644 index 0000000000000..acf9ebfcbabec --- /dev/null +++ b/apps/docs/content/guides/functions/ephemeral-storage.mdx @@ -0,0 +1,54 @@ +--- +id: 'function-ephemeral-storage' +title: 'Ephemeral Storage' +description: 'Read and write from temporary directory' +subtitle: 'Read and write from temporary directory' +--- + +Edge Functions provides ephemeral file storage. You can read and write files to the `/tmp` directory. + +Ephemeral storage will reset on each function invocation. This means the files you write during an invocation can only be read within the same invocation. + +### Use cases + +Here are some use cases where ephemeral storage can be useful: + +- Unzip an archive of CSVs and then add them as records to the DB +- Custom image manipulation workflows (using [MagickWasm](https://supabase.com/docs/guides/functions/examples/image-manipulation)) + +You can use [Background Tasks](https://supabase.com/docs/guides/functions/background-tasks) to handle slow file processing outside of a request. + +### How to use + +You can use [Deno File System APIs](https://docs.deno.com/api/deno/file-system) or the [`node:fs` module](https://docs.deno.com/api/node/fs/) to access the `/tmp` path. + +### Example + +Here is an example of how to write a user-uploaded zip file into a temporary file for further processing. + +```js +Deno.serve(async (req) => { + if (req.headers.get('content-type') !== 'application/zip') { + return new Response('file must be a zip file', { + status: 400, + }) + } + + const uploadId = crypto.randomUUID() + await Deno.writeFile('/tmp/' + uploadId, req.body) + + // do something with the written zip file + + return new Response('ok') +}) +``` + +### Unavailable APIs + +Currently, the synchronous APIs (eg: `Deno.writeFileSync` or `Deno.mkdirSync`) for creating or writing files are not supported. + +You can use sync variations of read APIs (eg: `Deno.readFileSync`). + +### Limits + +In the hosted platform, a free project can write up to 256MB of data to ephemeral storage. A paid project can write up to 512MB. From af3548f4ca17350a4a8eb11659fac1daca2c61c9 Mon Sep 17 00:00:00 2001 From: Lakshan Perera Date: Tue, 3 Dec 2024 07:46:21 +1100 Subject: [PATCH 2/5] Update background tasks guide (#30814) * fix wording * chore: update background tasks guide * Apply suggestions from code review Co-authored-by: Charis <26616127+charislam@users.noreply.github.com> --------- Co-authored-by: Charis <26616127+charislam@users.noreply.github.com> --- .../guides/functions/background-tasks.mdx | 56 +++++++++++++------ .../guides/functions/ephemeral-storage.mdx | 2 +- 2 files changed, 39 insertions(+), 19 deletions(-) diff --git a/apps/docs/content/guides/functions/background-tasks.mdx b/apps/docs/content/guides/functions/background-tasks.mdx index fbc1f2aebf827..6947f1a57608e 100644 --- a/apps/docs/content/guides/functions/background-tasks.mdx +++ b/apps/docs/content/guides/functions/background-tasks.mdx @@ -3,39 +3,59 @@ id: 'function-background-tasks' title: 'Background Tasks' description: 'How to run background tasks in an Edge Function outside of the request handler' subtitle: 'How to run background tasks in an Edge Function outside of the request handler' -tocVideo: 'rSKBTJxG9VA' --- Edge Function instances can process background tasks outside of the request handler. Background tasks are useful for asynchronous operations like uploading a file to Storage, updating a database, or sending events to a logging service. You can respond to the request immediately and leave the task running in the background. -### How long a background task can run +### How it works -A background task can run until the Edge Function instance hits its wall-clock limit or reaches CPU/Memory limit. Check [limits](/docs/guides/functions/limits) for current caps. +You can use `EdgeRuntime.waitUntil(promise)` to explicitly mark background tasks. The Function instance continues to run until the promise provided to `waitUntil` completes. + +The maximum duration is capped based on the wall-clock, CPU, and memory limits. The Function will shutdown when it reaches one of these [limits](/docs/guides/functions/limits). + +You can listen to the `beforeunload` event handler to be notified when Function invocation is about to be shut down. ### Example -Here's an example of defining a background task using a custom event. +Here's an example of using `EdgeRuntime.waitUntil` to run a background task and using `beforeunload` event to be notified when the instance is about to be shut down. ```ts -// Define a custom event type for the background task. -class MyBackgroundTaskEvent extends Event { - readonly taskPromise: Promise - - constructor(taskPromise: Promise) { - super('myBackgroundTask') - this.taskPromise = taskPromise - } +async function longRunningTask() { + // do work here } -globalThis.addEventListener('myBackgroundTask', async (event) => { - const res = await (event as MyBackgroundTaskEvent).taskPromise - console.log(await res.json()) +// Mark the longRunningTask's returned promise as a background task. +// note: we are not using await because we don't want it to block. +EdgeRuntime.waitUntil(longRunningTask()) + +// Use beforeunload event handler to be notified when function is about to shutdown +addEventListener('beforeunload', (ev) => { + console.log('Function will be shutdown due to', ev.detail?.reason) + + // save state or log the current progress +}) + +// Invoke the function using a HTTP request. +// This will start the background task +Deno.serve(async (req) => { + return new Response('ok') }) +``` + +### Starting a background task in the request handler + +You can call `EdgeRuntime.waitUntil` in the request handler too. This will not block the request. + +```ts +async function fetchAndLog(url: string) { + const response = await fetch('https://httpbin.org/json') + console.log(response) +} Deno.serve(async (req) => { - const fetchPromise = fetch('https://httpbin.org/json') - const event = new MyBackgroundTaskEvent(fetchPromise) - globalThis.dispatchEvent(event) + // this will not block the request, + // instead it will run in the background + EdgeRuntime.waitUntil(fetchAndLog('https://httpbin.org/json')) return new Response('ok') }) diff --git a/apps/docs/content/guides/functions/ephemeral-storage.mdx b/apps/docs/content/guides/functions/ephemeral-storage.mdx index acf9ebfcbabec..55bc58780ece9 100644 --- a/apps/docs/content/guides/functions/ephemeral-storage.mdx +++ b/apps/docs/content/guides/functions/ephemeral-storage.mdx @@ -24,7 +24,7 @@ You can use [Deno File System APIs](https://docs.deno.com/api/deno/file-system) ### Example -Here is an example of how to write a user-uploaded zip file into a temporary file for further processing. +Here is an example of how to write a user-uploaded zip file into temporary storage for further processing. ```js Deno.serve(async (req) => { From 71b85ea01b4d1c4275145238665bce844d2cc21a Mon Sep 17 00:00:00 2001 From: Oliver Rice Date: Mon, 2 Dec 2024 14:59:12 -0600 Subject: [PATCH 3/5] Update orioledb blog images (#30798) update orioledb blog images --- apps/www/_blog/2024-12-01-orioledb-launch.mdx | 2 +- .../blog/2024-12-01-orioledb-release/og.png | Bin 0 -> 22840 bytes .../2024-12-01-orioledb-release/thumb.png | Bin 27442 -> 12904 bytes 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 apps/www/public/images/blog/2024-12-01-orioledb-release/og.png diff --git a/apps/www/_blog/2024-12-01-orioledb-launch.mdx b/apps/www/_blog/2024-12-01-orioledb-launch.mdx index 63df6484446c0..54d0b26f736c0 100644 --- a/apps/www/_blog/2024-12-01-orioledb-launch.mdx +++ b/apps/www/_blog/2024-12-01-orioledb-launch.mdx @@ -2,7 +2,7 @@ title: 'OrioleDB Public Alpha' description: 'Launching OrioleDB Public Alpha' author: pavel -image: 2024-12-01-orioledb-release/thumb.png +image: 2024-12-01-orioledb-release/og.png thumb: 2024-12-01-orioledb-release/thumb.png categories: - engineering diff --git a/apps/www/public/images/blog/2024-12-01-orioledb-release/og.png b/apps/www/public/images/blog/2024-12-01-orioledb-release/og.png new file mode 100644 index 0000000000000000000000000000000000000000..1aac642d1ac90cf667c3459321704ebd5542c351 GIT binary patch literal 22840 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 literal 27442 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 Date: Mon, 2 Dec 2024 17:40:32 -0330 Subject: [PATCH 4/5] Chore/cron sentry issue (#30800) * Fix sentry error * Update apps/studio/components/interfaces/Integrations/CronJobs/CronJobsTab.tsx Co-authored-by: Ivan Vasilov --------- Co-authored-by: Ivan Vasilov --- .../components/interfaces/Integrations/CronJobs/CronJobsTab.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/studio/components/interfaces/Integrations/CronJobs/CronJobsTab.tsx b/apps/studio/components/interfaces/Integrations/CronJobs/CronJobsTab.tsx index 8ef51af2e0cef..816091fd880c8 100644 --- a/apps/studio/components/interfaces/Integrations/CronJobs/CronJobsTab.tsx +++ b/apps/studio/components/interfaces/Integrations/CronJobs/CronJobsTab.tsx @@ -56,7 +56,7 @@ export const CronjobsTab = () => { ) - const filteredCronJobs = (cronJobs ?? []).filter((cj) => cj.jobname.includes(searchQuery)) + const filteredCronJobs = (cronJobs ?? []).filter((cj) => cj?.jobname?.includes(searchQuery || '')) return ( <> From b6ed1494782ec959bf106b7fc19f9837475b67c4 Mon Sep 17 00:00:00 2001 From: Wen Bo Xie <5532241+w3b6x9@users.noreply.github.com> Date: Mon, 2 Dec 2024 16:37:51 -0500 Subject: [PATCH 5/5] feat: add orioledb public alpha to build stage (#30817) * feat: add orioledb public alpha to build stage * orioledb icon --------- Co-authored-by: Francesco Sansalvadore --- .../13/Releases/data/lw13_build_stage.tsx | 39 ++++++++++++++++--- 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/apps/www/components/LaunchWeek/13/Releases/data/lw13_build_stage.tsx b/apps/www/components/LaunchWeek/13/Releases/data/lw13_build_stage.tsx index 442ce1ee2c731..55b9b26b3a527 100644 --- a/apps/www/components/LaunchWeek/13/Releases/data/lw13_build_stage.tsx +++ b/apps/www/components/LaunchWeek/13/Releases/data/lw13_build_stage.tsx @@ -24,12 +24,39 @@ export interface AdventLink { export const days: AdventDay[] = [ { - title: '', - description: '', - id: '', - is_shipped: false, - links: [], - icon: null, + title: 'OrioleDB Public Alpha', + description: 'Postgres storage extension with better performance over default Heap storage', + id: 'orioledb', + is_shipped: true, + links: [ + { url: 'https://supabase.com/blog/orioledb-launch', label: 'Blog post', target: '_blank' }, + ], + icon: ( + + + + + + + ), }, { title: '',