From 02b41bae0d74fbe755b99fe95fb8634306e1ebb2 Mon Sep 17 00:00:00 2001 From: Stedoss <29103029+Stedoss@users.noreply.github.com> Date: Mon, 18 Nov 2024 02:03:53 +0000 Subject: [PATCH] Add guard to prevent mass score fetching of users we don't really care about --- .../kotlin/com/nisemoe/nise/scheduler/ImportScores.kt | 10 ++++++++-- .../com/nisemoe/nise/service/UpdateUserQueueService.kt | 7 +++---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/nise-backend/src/main/kotlin/com/nisemoe/nise/scheduler/ImportScores.kt b/nise-backend/src/main/kotlin/com/nisemoe/nise/scheduler/ImportScores.kt index 31e2d84..f25e799 100644 --- a/nise-backend/src/main/kotlin/com/nisemoe/nise/scheduler/ImportScores.kt +++ b/nise-backend/src/main/kotlin/com/nisemoe/nise/scheduler/ImportScores.kt @@ -162,7 +162,13 @@ class ImportScores( this.logger.info("Processing ${queue.size} users from the queue.") } - for(userId in queue) { + for(queueEntry in queue) { + val userId = queueEntry.userId + + // We should only 'full fetch' a user if they have been explicitly added by another user, + // else we will spend way too much time on random users. + val shouldFullFetch = queueEntry.addedByUserId != null + val user = this.osuApi.getUserProfile(userId.toString()) if (user == null) { @@ -173,7 +179,7 @@ class ImportScores( var userScores = mutableListOf() - if (user.beatmap_playcounts_count != null) { + if (shouldFullFetch && user.beatmap_playcounts_count != null) { val mapsPlayed: MutableSet = mutableSetOf() this.logger.info("User has ${user.beatmap_playcounts_count} unique beatmap plays") diff --git a/nise-backend/src/main/kotlin/com/nisemoe/nise/service/UpdateUserQueueService.kt b/nise-backend/src/main/kotlin/com/nisemoe/nise/service/UpdateUserQueueService.kt index 480d696..e188b07 100644 --- a/nise-backend/src/main/kotlin/com/nisemoe/nise/service/UpdateUserQueueService.kt +++ b/nise-backend/src/main/kotlin/com/nisemoe/nise/service/UpdateUserQueueService.kt @@ -79,12 +79,11 @@ class UpdateUserQueueService( /** * Retrieves the full update queue, only pending users. */ - fun getQueue(): List { - return dslContext.select(UPDATE_USER_QUEUE.USER_ID) - .from(UPDATE_USER_QUEUE) + fun getQueue(): List { + return dslContext.selectFrom(UPDATE_USER_QUEUE) .where(UPDATE_USER_QUEUE.PROCESSED.isFalse) .orderBy(UPDATE_USER_QUEUE.CREATED_AT.asc()) - .fetchInto(Long::class.java) + .fetch() } /**