From 1084bda2fea045944b25441b36e8134a08c6e492 Mon Sep 17 00:00:00 2001 From: Hong Minhee Date: Mon, 23 Sep 2024 00:18:26 +0900 Subject: [PATCH] Use Postgres as cache/message queue backend --- bun.lockb | Bin 147910 -> 147370 bytes docs/src/content/docs/install/env.mdx | 3 +-- package.json | 5 +++-- src/db.ts | 6 +++--- src/federation/index.ts | 12 ++++++------ 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/bun.lockb b/bun.lockb index 98c7a2626ef344c582347dd88cb362744bd039de..afa6e629bc3dca8db0897b6de848412ad8e3fb4b 100755 GIT binary patch delta 25754 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 D0n%-( delta 26007 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 diff --git a/docs/src/content/docs/install/env.mdx b/docs/src/content/docs/install/env.mdx index e4e3b050..228c5249 100644 --- a/docs/src/content/docs/install/env.mdx +++ b/docs/src/content/docs/install/env.mdx @@ -18,8 +18,7 @@ The URL of the PostgreSQL database, e.g., The URL of the Redis server, e.g., `redis://localhost/0`. -If not set, Hollo will use an in-memory cache and in-process job queue, which -means that the cache and job queue will be lost when the server restarts. +If not set, Hollo will use PostgreSQL for caching and message queueing. ### `HOME_URL` diff --git a/package.json b/package.json index 52377d2c..a6c7d0e8 100644 --- a/package.json +++ b/package.json @@ -13,10 +13,11 @@ "dependencies": { "@aws-sdk/client-s3": "^3.577.0", "@aws-sdk/credential-providers": "^3.577.0", - "@fedify/fedify": "1.0.0-dev.388", + "@fedify/fedify": "^1.0.0-dev.410", "@fedify/markdown-it-hashtag": "0.2.0", "@fedify/markdown-it-mention": "^0.1.1", - "@fedify/redis": "^0.1.1", + "@fedify/postgres": "^0.1.0-dev.3", + "@fedify/redis": "^0.2.0-dev.10", "@hono/zod-validator": "^0.2.1", "@js-temporal/polyfill": "^0.4.4", "@logtape/logtape": "^0.4.2", diff --git a/src/db.ts b/src/db.ts index 41962469..b8fd8396 100644 --- a/src/db.ts +++ b/src/db.ts @@ -1,7 +1,7 @@ import { getLogger } from "@logtape/logtape"; import type { Logger } from "drizzle-orm/logger"; import { drizzle } from "drizzle-orm/postgres-js"; -import postgres from "postgres"; +import createPostgres from "postgres"; import * as schema from "./schema"; // biome-ignore lint/complexity/useLiteralKeys: tsc rants about this (TS4111) @@ -56,7 +56,7 @@ class LogTapeLogger implements Logger { } } -const client = postgres(databaseUrl, { connect_timeout: 5 }); -export const db = drizzle(client, { schema, logger: new LogTapeLogger() }); +export const postgres = createPostgres(databaseUrl, { connect_timeout: 5 }); +export const db = drizzle(postgres, { schema, logger: new LogTapeLogger() }); export default db; diff --git a/src/federation/index.ts b/src/federation/index.ts index 0738cfeb..25f20139 100644 --- a/src/federation/index.ts +++ b/src/federation/index.ts @@ -12,7 +12,6 @@ import { Image, type KvStore, Like, - MemoryKvStore, type MessageQueue, Note, PropertyValue, @@ -26,6 +25,7 @@ import { importJwk, isActor, } from "@fedify/fedify"; +import { PostgresKvStore, PostgresMessageQueue } from "@fedify/postgres"; import { RedisKvStore, RedisMessageQueue } from "@fedify/redis"; import { getLogger } from "@logtape/logtape"; import { parse } from "@std/semver"; @@ -40,7 +40,7 @@ import { like, } from "drizzle-orm"; import metadata from "../../package.json" with { type: "json" }; -import db from "../db"; +import { db, postgres } from "../db"; import { createRedis, getRedisUrl } from "../redis"; import { type NewLike, @@ -69,13 +69,13 @@ import { const logger = getLogger(["hollo", "federation"]); let kv: KvStore; -let queue: MessageQueue | undefined; +let queue: MessageQueue; if (getRedisUrl() == null) { - kv = new MemoryKvStore(); - queue = undefined; + kv = new PostgresKvStore(postgres); + queue = new PostgresMessageQueue(postgres); logger.warn( - "No REDIS_URL is defined, using in-memory store and in-process queue.", + "No REDIS_URL is defined, using PostgresKvStore and PostgresMessageQueue.", ); } else { kv = new RedisKvStore(createRedis());