New queue for view once syncs, handleRetry improvements
This commit is contained in:
parent
571ee3cab6
commit
0a18cc50bd
12 changed files with 271 additions and 115 deletions
53
ts/jobs/viewOnceOpenJobQueue.ts
Normal file
53
ts/jobs/viewOnceOpenJobQueue.ts
Normal file
|
@ -0,0 +1,53 @@
|
|||
// Copyright 2022 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import * as durations from '../util/durations';
|
||||
import type { LoggerType } from '../types/Logging';
|
||||
import { exponentialBackoffMaxAttempts } from '../util/exponentialBackoff';
|
||||
import type { SyncType } from './helpers/syncHelpers';
|
||||
import {
|
||||
SyncTypeList,
|
||||
parseRawSyncDataArray,
|
||||
runSyncJob,
|
||||
} from './helpers/syncHelpers';
|
||||
import { strictAssert } from '../util/assert';
|
||||
import { isRecord } from '../util/isRecord';
|
||||
|
||||
import { JobQueue } from './JobQueue';
|
||||
import { jobQueueDatabaseStore } from './JobQueueDatabaseStore';
|
||||
|
||||
const MAX_RETRY_TIME = durations.DAY;
|
||||
|
||||
export type ViewOnceOpenJobData = {
|
||||
viewOnceOpens: Array<SyncType>;
|
||||
};
|
||||
|
||||
export class ViewOnceOpenJobQueue extends JobQueue<ViewOnceOpenJobData> {
|
||||
protected parseData(data: unknown): ViewOnceOpenJobData {
|
||||
strictAssert(isRecord(data), 'data is not an object');
|
||||
return { viewOnceOpens: parseRawSyncDataArray(data.viewOnceOpens) };
|
||||
}
|
||||
|
||||
protected async run(
|
||||
{
|
||||
data,
|
||||
timestamp,
|
||||
}: Readonly<{ data: ViewOnceOpenJobData; timestamp: number }>,
|
||||
{ attempt, log }: Readonly<{ attempt: number; log: LoggerType }>
|
||||
): Promise<void> {
|
||||
await runSyncJob({
|
||||
attempt,
|
||||
log,
|
||||
maxRetryTime: MAX_RETRY_TIME,
|
||||
syncs: data.viewOnceOpens,
|
||||
timestamp,
|
||||
type: SyncTypeList.ViewOnceOpen,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export const viewOnceOpenJobQueue = new ViewOnceOpenJobQueue({
|
||||
store: jobQueueDatabaseStore,
|
||||
queueType: 'view once open sync',
|
||||
maxAttempts: exponentialBackoffMaxAttempts(MAX_RETRY_TIME),
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue