aboutsummaryrefslogtreecommitdiffstats
path: root/packages/plugins
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2026-01-07 10:14:25 +0000
committerMohamed Bassem <me@mbassem.com>2026-01-10 15:13:05 +0000
commit35a259dd189e825431a6cbbd7eb425514d5616f0 (patch)
tree8ed6991ed5da4cc7a8c6718e08d9fc364123f89e /packages/plugins
parent4ba1475d4cf2fb31d85158a92c9fce0bb327c9b4 (diff)
downloadkarakeep-35a259dd189e825431a6cbbd7eb425514d5616f0.tar.zst
fix: guard meilisearch client init with mutex
Diffstat (limited to 'packages/plugins')
-rw-r--r--packages/plugins/search-meilisearch/src/index.ts12
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;
}