From 6f12b5e4066a0af59f794bc6bc4d54eeb124860b Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Thu, 25 Jul 2024 10:54:21 +0800 Subject: [PATCH] reduce bulk action batch size to 50 --- packages/api/src/jobs/bulk_action.ts | 1 + packages/api/src/repository/library_item.ts | 2 +- packages/api/src/resolvers/article/index.ts | 7 ++++--- packages/api/src/services/library_item.ts | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/api/src/jobs/bulk_action.ts b/packages/api/src/jobs/bulk_action.ts index cea355d6e..28ee8461c 100644 --- a/packages/api/src/jobs/bulk_action.ts +++ b/packages/api/src/jobs/bulk_action.ts @@ -27,6 +27,7 @@ export const bulkAction = async (data: BulkActionData) => { for (let offset = 0; offset < count; offset += batchSize) { const searchArgs = { size: batchSize, + includePending: true, query: `(${query}) AND updated:*..${now}`, // only process items that have not been updated } diff --git a/packages/api/src/repository/library_item.ts b/packages/api/src/repository/library_item.ts index 7b1470922..c37e56f82 100644 --- a/packages/api/src/repository/library_item.ts +++ b/packages/api/src/repository/library_item.ts @@ -25,7 +25,7 @@ export const libraryItemRepository = appDataSource .andWhere('md5(original_url) = md5(:url)', { url }) if (forUpdate) { - qb.setLock('pessimistic_write') + qb.setLock('pessimistic_read') } return qb.getOne() diff --git a/packages/api/src/resolvers/article/index.ts b/packages/api/src/resolvers/article/index.ts index 73f17a2c3..ff86d934a 100644 --- a/packages/api/src/resolvers/article/index.ts +++ b/packages/api/src/resolvers/article/index.ts @@ -760,9 +760,10 @@ export const bulkActionResolver = authorized< }, }) - const batchSize = 100 + const batchSize = 50 const searchArgs = { query, + includePending: true, size: 0, } const count = await countLibraryItems(searchArgs, uid) @@ -778,13 +779,13 @@ export const bulkActionResolver = authorized< action, count, }) - // if there are less than 100 items, update them synchronously + // if there are less than 50 items, update them synchronously await batchUpdateLibraryItems(action, searchArgs, uid, labelIds, args) return { success: true } } - // if there are more than 100 items, update them asynchronously + // if there are more than 50 items, update them asynchronously const data = { userId: uid, action, diff --git a/packages/api/src/services/library_item.ts b/packages/api/src/services/library_item.ts index 37200da5c..ed133eaff 100644 --- a/packages/api/src/services/library_item.ts +++ b/packages/api/src/services/library_item.ts @@ -1256,7 +1256,7 @@ export const batchUpdateLibraryItems = async ( const queryBuilder = getQueryBuilder(userId, em) if (forUpdate) { - queryBuilder.setLock('pessimistic_write') + queryBuilder.setLock('pessimistic_read') } const libraryItems = await queryBuilder