Skip to content

Commit

Permalink
avoid program lag caused by frequent triggering of read/write operati…
Browse files Browse the repository at this point in the history
…ons due to Linux file system notification
  • Loading branch information
josStorer committed Mar 27, 2024
1 parent 5f637dc commit 2818700
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 15 deletions.
10 changes: 7 additions & 3 deletions frontend/src/startup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { t } from 'i18next';
import { Preset } from './types/presets';
import { toast } from 'react-toastify';
import { MidiMessage, MidiPort } from './types/composition';
import { throttle } from 'lodash-es';

export async function startup() {
initPresets();
Expand Down Expand Up @@ -103,7 +104,7 @@ async function initPresets() {
}

async function initLoraModels() {
const refreshLoraModels = () => {
const refreshLoraModels = throttle(() => {
ListDirFiles('lora-models').then((data) => {
if (!data) return;
const loraModels = [];
Expand All @@ -114,7 +115,7 @@ async function initLoraModels() {
}
commonStore.setLoraModels(loraModels);
});
};
}, 2000);

refreshLoraModels();
EventsOn('fsnotify', (data: string) => {
Expand All @@ -124,9 +125,12 @@ async function initLoraModels() {
}

async function initLocalModelsNotify() {
const throttleRefreshLocalModels = throttle(() => {
refreshLocalModels({ models: commonStore.modelSourceList }, false); //TODO fix bug that only add models
}, 2000);
EventsOn('fsnotify', (data: string) => {
if (data.includes('models') && !data.includes('lora-models'))
refreshLocalModels({ models: commonStore.modelSourceList }, false); //TODO fix bug that only add models
throttleRefreshLocalModels();
});
}

Expand Down
26 changes: 14 additions & 12 deletions frontend/src/utils/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,7 @@ export async function refreshBuiltInModels(readCache: boolean = false) {
else cache.models = manifest.models.slice();

commonStore.setModelSourceList(cache.models);
await saveCache().catch(() => {
});
saveCache();
return cache;
}

Expand Down Expand Up @@ -120,8 +119,7 @@ export async function refreshLocalModels(cache: {
commonStore.setModelSourceList(cache.models);
if (initUnfinishedModels)
initLastUnfinishedModelDownloads();
await saveCache().catch(() => {
});
saveCache();
}

function initLastUnfinishedModelDownloads() {
Expand Down Expand Up @@ -240,14 +238,18 @@ export const saveConfigs = throttle(async () => {
trailing: true
});

export const saveCache = async () => {
const data: Cache = {
version: manifest.version,
models: commonStore.modelSourceList,
depComplete: commonStore.depComplete
};
return SaveJson('cache.json', data);
};
export const saveCache = throttle(async () => {
const data: Cache = {
version: manifest.version,
models: commonStore.modelSourceList,
depComplete: commonStore.depComplete
};
return SaveJson('cache.json', data);
}, 1000,
{
leading: true,
trailing: true
});

export const savePresets = async () => {
return SaveJson('presets.json', commonStore.presets);
Expand Down

0 comments on commit 2818700

Please sign in to comment.