diff --git a/.vscode/launch.json b/.vscode/launch.json index 96d8043c23..b80e833e9b 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -85,7 +85,6 @@ "SERVER_SECRET": "secret", "REKONI_URL": "http://localhost:4004", "MODEL_JSON": "${workspaceRoot}/models/all/bundle/model.json", - "REGION":"pg", "ELASTIC_INDEX_NAME": "local_storage_index", "STATS_URL":"http://host.docker.internal:4900", "ACCOUNTS_URL": "http://localhost:3000", diff --git a/packages/query/src/index.ts b/packages/query/src/index.ts index 14ab8d8f67..d24b6ea13c 100644 --- a/packages/query/src/index.ts +++ b/packages/query/src/index.ts @@ -364,7 +364,8 @@ export class LiveQuery implements WithTx, Client { total: 0, options: options as FindOptions, callbacks: new Map(), - refresh: reduceCalls(() => this.doRefresh(q)) + refresh: reduceCalls(() => this.doRefresh(q)), + refreshId: 0 } if (callback !== undefined) { q.callbacks.set(callback.callbackId, callback.callback as unknown as Callback) @@ -787,8 +788,9 @@ export class LiveQuery implements WithTx, Client { } private async doRefresh (q: Query): Promise { + const qid = ++q.refreshId const res = await this.client.findAll(q._class, q.query, q.options) - if (!deepEqual(res, q.result) || (res.total !== q.total && q.options?.total === true)) { + if (q.refreshId === qid && (!deepEqual(res, q.result) || (res.total !== q.total && q.options?.total === true))) { q.result = new ResultArray(res, this.getHierarchy()) q.total = res.total await this.callback(q) diff --git a/packages/query/src/types.ts b/packages/query/src/types.ts index 3628782acd..5dec89ed02 100644 --- a/packages/query/src/types.ts +++ b/packages/query/src/types.ts @@ -12,6 +12,6 @@ export interface Query { options?: FindOptions total: number callbacks: Map - refresh: () => Promise + refreshId: number } diff --git a/server/indexer/src/indexer/indexer.ts b/server/indexer/src/indexer/indexer.ts index 772d3bdccd..2f70cf00f6 100644 --- a/server/indexer/src/indexer/indexer.ts +++ b/server/indexer/src/indexer/indexer.ts @@ -402,7 +402,7 @@ export class FullTextIndexPipeline implements FullTextPipeline { ): Promise<{ classUpdate: Ref>[], processed: number }> { const _classUpdate = new Set>>() let processed = 0 - await rateLimiter.add(async () => { + await rateLimiter.exec(async () => { let st = Date.now() let groupBy = await this.storage.groupBy(ctx, DOMAIN_DOC_INDEX_STATE, 'objectClass', { needIndex: true })