Notes/src/services/sync_mutex.ts
2025-01-09 18:07:02 +02:00

22 lines
502 B
TypeScript

/**
* Sync process can make data intermittently inconsistent. Processes which require strong data consistency
* (like consistency checks) can use this mutex to make sure sync isn't currently running.
*/
import { Mutex } from "async-mutex";
const instance = new Mutex();
async function doExclusively<T>(func: () => T) {
const releaseMutex = await instance.acquire();
try {
return await func();
} finally {
releaseMutex();
}
}
export default {
doExclusively
};