Merge pull request #13220 from Budibase/fix/init-doc-writethrough

Init doc writethrough processor correctly
This commit is contained in:
Adria Navarro 2024-03-08 13:38:51 +01:00 committed by GitHub
commit 6a596ff841
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 22 additions and 2 deletions

View File

@ -10,6 +10,7 @@ interface ProcessDocMessage {
} }
const PERSIST_MAX_ATTEMPTS = 100 const PERSIST_MAX_ATTEMPTS = 100
let processor: DocWritethroughProcessor | undefined
export const docWritethroughProcessorQueue = createQueue<ProcessDocMessage>( export const docWritethroughProcessorQueue = createQueue<ProcessDocMessage>(
JobQueue.DOC_WRITETHROUGH_QUEUE, JobQueue.DOC_WRITETHROUGH_QUEUE,
@ -61,8 +62,6 @@ class DocWritethroughProcessor {
} }
} }
export const processor = new DocWritethroughProcessor().init()
export class DocWritethrough { export class DocWritethrough {
private db: Database private db: Database
private _docId: string private _docId: string
@ -84,3 +83,15 @@ export class DocWritethrough {
}) })
} }
} }
export function init(): DocWritethroughProcessor {
processor = new DocWritethroughProcessor().init()
return processor
}
export function getProcessor(): DocWritethroughProcessor {
if (!processor) {
return init()
}
return processor
}

View File

@ -7,6 +7,7 @@ import { getDB } from "../../db"
import { import {
DocWritethrough, DocWritethrough,
docWritethroughProcessorQueue, docWritethroughProcessorQueue,
init,
} from "../docWritethrough" } from "../docWritethrough"
import InMemoryQueue from "../../queue/inMemoryQueue" import InMemoryQueue from "../../queue/inMemoryQueue"
@ -19,6 +20,10 @@ async function waitForQueueCompletion() {
} }
describe("docWritethrough", () => { describe("docWritethrough", () => {
beforeAll(() => {
init()
})
const config = new DBTestConfiguration() const config = new DBTestConfiguration()
const db = getDB(structures.db.id()) const db = getDB(structures.db.id())

View File

@ -7,6 +7,7 @@ import {
logging, logging,
tenancy, tenancy,
users, users,
cache,
} from "@budibase/backend-core" } from "@budibase/backend-core"
import fs from "fs" import fs from "fs"
import { watch } from "./watch" import { watch } from "./watch"
@ -74,6 +75,7 @@ export async function startup(app?: Koa, server?: Server) {
eventEmitter.emitPort(env.PORT) eventEmitter.emitPort(env.PORT)
fileSystem.init() fileSystem.init()
await redis.init() await redis.init()
cache.docWritethrough.init()
eventInit() eventInit()
if (app && server) { if (app && server) {
initialiseWebsockets(app, server) initialiseWebsockets(app, server)

View File

@ -17,6 +17,7 @@ import {
env as coreEnv, env as coreEnv,
timers, timers,
redis, redis,
cache,
} from "@budibase/backend-core" } from "@budibase/backend-core"
db.init() db.init()
@ -90,6 +91,7 @@ export default server.listen(parseInt(env.PORT || "4002"), async () => {
console.log(`Worker running on ${JSON.stringify(server.address())}`) console.log(`Worker running on ${JSON.stringify(server.address())}`)
await initPro() await initPro()
await redis.clients.init() await redis.clients.init()
cache.docWritethrough.init()
// configure events to use the pro audit log write // configure events to use the pro audit log write
// can't integrate directly into backend-core due to cyclic issues // can't integrate directly into backend-core due to cyclic issues
await events.processors.init(proSdk.auditLogs.write) await events.processors.init(proSdk.auditLogs.write)