Skip to content

Commit 599a718

Browse files
committed
make indexing non-blocking
1 parent 6bfd3bf commit 599a718

File tree

1 file changed

+21
-10
lines changed

1 file changed

+21
-10
lines changed

src/api/src/routes/search.js

+21-10
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ const readMeta = async (dir, md) => {
9191
};
9292

9393
const listMeta = async (dir, { md, meta }) => {
94-
md = md || meta.slice() || [];
94+
md = md || meta?.slice() || [];
9595
versions = {};
9696
md.forEach((o, i) => {
9797
if (!versions[o.prefix]) {
@@ -259,16 +259,11 @@ let keys = {};
259259
let tree = {};
260260
let status = "LOADING";
261261

262-
const loadIndex = async () => {
263-
// TODO: support cancelling this indexing if called again before finished
264-
// Load dataset IDs first to get an index ready quickly
262+
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
263+
264+
const loadFullIndex = async () => {
265265
try {
266-
let newMeta = await listMeta(dataDirectory, { meta });
267-
let newIndex = generateIndex(newMeta);
268-
let newKeys = Object.keys(newIndex.values);
269-
meta = newMeta;
270-
index = newIndex;
271-
keys = newKeys;
266+
await sleep(10000);
272267
// Load metadata into full index
273268
status = "INDEXING";
274269
newMeta = await readMeta(dataDirectory);
@@ -288,6 +283,22 @@ const loadIndex = async () => {
288283
}
289284
};
290285

286+
const loadIndex = async () => {
287+
try {
288+
let newMeta = await listMeta(dataDirectory, {});
289+
let newIndex = generateIndex(newMeta);
290+
let newKeys = Object.keys(newIndex.values);
291+
meta = newMeta;
292+
index = newIndex;
293+
keys = newKeys;
294+
status = "INDEXING";
295+
loadFullIndex();
296+
} catch (message) {
297+
logError({ message });
298+
status = "NOT OK";
299+
}
300+
};
301+
291302
const autocomplete = (term) => {
292303
query = term.toUpperCase();
293304
let results = [];

0 commit comments

Comments
 (0)