metadata garbage collection
This commit is contained in:
parent
5c5c1c2abe
commit
8c7a27d7c6
21
index.js
21
index.js
|
@ -20,6 +20,10 @@ let levels = {
|
|||
metadata: [],
|
||||
};
|
||||
|
||||
function getAllLevels() {
|
||||
return [...levels.nlw.regular, ...levels.nlw.platformer, ...levels.nlw.pending, ...levels.ids.regular];
|
||||
}
|
||||
|
||||
async function exists(f) {
|
||||
try {
|
||||
await fs.stat(f);
|
||||
|
@ -89,6 +93,7 @@ const metadataFetchQueue = new PQueue({ concurrency: 10, interval: 500, interval
|
|||
metadataFetchQueue.on('empty', async () => {
|
||||
console.log('metadata fetch queue empty, idling');
|
||||
await metadataSanityCheck();
|
||||
await metadataGarbageCollect();
|
||||
});
|
||||
|
||||
// hopefully will prevent cross-sheet duplicate fighting
|
||||
|
@ -106,7 +111,7 @@ function getMetadata(level) {
|
|||
}
|
||||
|
||||
async function loadupMetadataQueue() {
|
||||
const list = [...levels.nlw.regular, ...levels.nlw.platformer, ...levels.nlw.pending, ...levels.ids.regular];
|
||||
const list = getAllLevels();
|
||||
|
||||
const noMetadata = list.filter(l => getMetadata(l) === undefined);
|
||||
if (noMetadata.length === 0) {
|
||||
|
@ -160,6 +165,20 @@ async function metadataSanityCheck() {
|
|||
}
|
||||
}
|
||||
|
||||
async function metadataGarbageCollect() {
|
||||
const metadata = [];
|
||||
for (const level of getAllLevels()) {
|
||||
const data = getMetadata(level);
|
||||
if (data && metadata.findIndex(m => m.name === data.name && m.creator === data.creator) === -1) metadata.push(data);
|
||||
}
|
||||
|
||||
if (metadata.length < levels.metadata.length) {
|
||||
console.log(`garbage collecting metadata (${levels.metadata.length - metadata.length} levels)`);
|
||||
levels.metadata = levels.metadata.filter(m => metadata.indexOf(m) !== -1);
|
||||
await saveCache();
|
||||
}
|
||||
}
|
||||
|
||||
await loadCache();
|
||||
//await loadupMetadataQueue();
|
||||
|
||||
|
|
Loading…
Reference in New Issue