Additional logging, more reliable contact/group sync fetch

This commit is contained in:
Scott Nonnenberg 2023-06-14 13:51:49 -07:00 committed by GitHub
parent 8e1a30d720
commit efc237d106
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 86 additions and 16 deletions

View file

@ -241,6 +241,8 @@ export class SignalProtocolStore extends EventEmitter {
sessionQueues = new Map<SessionIdType, PQueue>();
sessionQueueJobCounter = 0;
private readonly identityQueues = new Map<UUIDStringType, PQueue>();
private currentZone?: Zone;
@ -703,13 +705,31 @@ export class SignalProtocolStore extends EventEmitter {
async enqueueSessionJob<T>(
qualifiedAddress: QualifiedAddress,
name: string,
task: () => Promise<T>,
zone: Zone = GLOBAL_ZONE
): Promise<T> {
this.sessionQueueJobCounter += 1;
const id = this.sessionQueueJobCounter;
const waitStart = Date.now();
return this.withZone(zone, 'enqueueSessionJob', async () => {
const queue = this._getSessionQueue(qualifiedAddress);
return queue.add<T>(task);
const waitTime = Date.now() - waitStart;
log.info(
`enqueueSessionJob(${id}): queuing task ${name}, waited ${waitTime}ms`
);
const queueStart = Date.now();
return queue.add<T>(() => {
const queueTime = Date.now() - queueStart;
log.info(
`enqueueSessionJob(${id}): running task ${name}, waited ${queueTime}ms`
);
return task();
});
});
}
@ -1322,6 +1342,7 @@ export class SignalProtocolStore extends EventEmitter {
await this.enqueueSessionJob(
addr,
`_archiveSession(${addr.toString()})`,
async () => {
const item = entry.hydrated
? entry.item