[core] Use maxExecutionTime instead of timeout in async-lock to avoid "async-lock timed out in queue" error

fix #831
This commit is contained in:
devlikepro committed 2025-05-23 14:47:34 +07:00
1 parent e63726d18b
commit 31885e41af
3 files changed
+11 -5

No files matched your search

+1 -2
View File
@@ -50,7 +50,6 @@ export abstract class SessionManager
WAIT_SESSION_RUNNING_TIMEOUT = 5_000;
WAIT_STATUS_INTERVAL = 500;
WAIT_STATUS_TIMEOUT = 10_000;
LOCK_TIMEOUT = 10_000;
protected constructor(
protected log: PinoLogger,
@@ -59,7 +58,7 @@ export abstract class SessionManager
) {
this.lock = new AsyncLock({
maxPending: Infinity,
timeout: this.LOCK_TIMEOUT,
maxExecutionTime: 30_000,
});
this.log.setContext(SessionManager.name);
}
@@ -50,7 +50,12 @@ export class NowebPersistentStore implements INowebStore {
private labelsRepo: ILabelsRepository;
private labelAssociationsRepo: ILabelAssociationRepository;
public presences: any;
private lock: any;
private lock: any = new AsyncLock({
maxPending: Infinity,
maxExecutionTime: 60_000,
});
private groupsFetchLock: any = new AsyncLock({
maxPending: Infinity,
maxExecutionTime: 60_000,
@@ -72,7 +77,6 @@ export class NowebPersistentStore implements INowebStore {
this.labelsRepo = storage.getLabelsRepository();
this.labelAssociationsRepo = storage.getLabelAssociationRepository();
this.presences = {};
this.lock = new AsyncLock({ maxPending: Infinity });
}
init(): Promise<void> {
@@ -18,7 +18,10 @@ const AsyncLock = require('async-lock');
// https://github.com/nodejs/node/issues/26338
// Default pending is 1000, set it to infinity
// https://github.com/rogierschouten/async-lock/issues/63
const fileLock = new AsyncLock({ maxPending: Infinity });
const fileLock = new AsyncLock({
maxPending: Infinity,
maxExecutionTime: 30_000,
});
/**
* stores the full authentication state in a single folder.