fix: no lock on queue duplicates

This commit is contained in:
bo0tzz
2026-05-14 10:20:50 +02:00
parent e2e9dd425f
commit 6fec82b772
+19 -21
View File
@@ -300,30 +300,28 @@ export class DuplicateService extends BaseService {
@OnJob({ name: JobName.AssetDetectDuplicatesQueueAll, queue: QueueName.DuplicateDetection }) @OnJob({ name: JobName.AssetDetectDuplicatesQueueAll, queue: QueueName.DuplicateDetection })
async handleQueueSearchDuplicates({ force }: JobOf<JobName.AssetDetectDuplicatesQueueAll>): Promise<JobStatus> { async handleQueueSearchDuplicates({ force }: JobOf<JobName.AssetDetectDuplicatesQueueAll>): Promise<JobStatus> {
return this.databaseRepository.withLock(DatabaseLock.DuplicateDetection, async () => { const { machineLearning } = await this.getConfig({ withCache: false });
const { machineLearning } = await this.getConfig({ withCache: false }); if (!isDuplicateDetectionEnabled(machineLearning)) {
if (!isDuplicateDetectionEnabled(machineLearning)) { return JobStatus.Skipped;
return JobStatus.Skipped; }
let jobs: JobItem[] = [];
const queueAll = async () => {
await this.jobRepository.queueAll(jobs);
jobs = [];
};
const assets = this.assetJobRepository.streamForSearchDuplicates(force);
for await (const asset of assets) {
jobs.push({ name: JobName.AssetDetectDuplicates, data: { id: asset.id } });
if (jobs.length >= JOBS_ASSET_PAGINATION_SIZE) {
await queueAll();
} }
}
let jobs: JobItem[] = []; await queueAll();
const queueAll = async () => {
await this.jobRepository.queueAll(jobs);
jobs = [];
};
const assets = this.assetJobRepository.streamForSearchDuplicates(force); return JobStatus.Success;
for await (const asset of assets) {
jobs.push({ name: JobName.AssetDetectDuplicates, data: { id: asset.id } });
if (jobs.length >= JOBS_ASSET_PAGINATION_SIZE) {
await queueAll();
}
}
await queueAll();
return JobStatus.Success;
});
} }
@OnJob({ name: JobName.AssetDetectDuplicates, queue: QueueName.DuplicateDetection }) @OnJob({ name: JobName.AssetDetectDuplicates, queue: QueueName.DuplicateDetection })