diff options
| author | Mohamed Bassem <me@mbassem.com> | 2026-01-07 10:14:25 +0000 |
|---|---|---|
| committer | Mohamed Bassem <me@mbassem.com> | 2026-01-10 15:13:05 +0000 |
| commit | 35a259dd189e825431a6cbbd7eb425514d5616f0 (patch) | |
| tree | 8ed6991ed5da4cc7a8c6718e08d9fc364123f89e /packages/plugins | |
| parent | 4ba1475d4cf2fb31d85158a92c9fce0bb327c9b4 (diff) | |
| download | karakeep-35a259dd189e825431a6cbbd7eb425514d5616f0.tar.zst | |
fix: guard meilisearch client init with mutex
Diffstat (limited to 'packages/plugins')
| -rw-r--r-- | packages/plugins/search-meilisearch/src/index.ts | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/packages/plugins/search-meilisearch/src/index.ts b/packages/plugins/search-meilisearch/src/index.ts index 30da4a64..8ffd48cf 100644 --- a/packages/plugins/search-meilisearch/src/index.ts +++ b/packages/plugins/search-meilisearch/src/index.ts @@ -80,6 +80,7 @@ class MeiliSearchIndexClient implements SearchIndexClient { export class MeiliSearchProvider implements PluginProvider<SearchIndexClient> { private client: MeiliSearch | undefined; private indexClient: SearchIndexClient | undefined; + private initPromise: Promise<SearchIndexClient | null> | undefined; private readonly indexName = "bookmarks"; constructor() { @@ -100,6 +101,17 @@ export class MeiliSearchProvider implements PluginProvider<SearchIndexClient> { return this.indexClient; } + if (this.initPromise) { + return this.initPromise; + } + + this.initPromise = this.initClient(); + const client = await this.initPromise; + this.initPromise = undefined; + return client; + } + + private async initClient(): Promise<SearchIndexClient | null> { if (!this.client) { return null; } |
