From 35c293f18a0aaae1286dfc7b695399fb4702277e Mon Sep 17 00:00:00 2001 From: Adam Jordens Date: Tue, 28 May 2019 12:11:16 -0700 Subject: [PATCH] fix(sql): Properly apply `maxResults` in `listObjectVersions()` --- .../netflix/spinnaker/front50/model/SqlStorageService.kt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/front50-sql/src/main/kotlin/com/netflix/spinnaker/front50/model/SqlStorageService.kt b/front50-sql/src/main/kotlin/com/netflix/spinnaker/front50/model/SqlStorageService.kt index 998dafbd8..985db63c8 100644 --- a/front50-sql/src/main/kotlin/com/netflix/spinnaker/front50/model/SqlStorageService.kt +++ b/front50-sql/src/main/kotlin/com/netflix/spinnaker/front50/model/SqlStorageService.kt @@ -30,6 +30,7 @@ import java.time.Clock import com.netflix.spinnaker.front50.model.ObjectType.* import com.netflix.spinnaker.front50.model.sql.* import com.netflix.spinnaker.kork.sql.config.SqlRetryProperties +import java.util.ArrayList class SqlStorageService( private val objectMapper: ObjectMapper, @@ -173,14 +174,19 @@ class SqlStorageService( override fun listObjectVersions(objectType: ObjectType, objectKey: String, maxResults: Int): List { - val bodies = jooq.withRetry(sqlRetryProperties.reads) { ctx -> + if (maxResults == 1) { + // will throw NotFoundException if object does not exist + return listOf(loadObject(objectType, objectKey)) + } + val bodies = jooq.withRetry(sqlRetryProperties.reads) { ctx -> if (definitionsByType[objectType]!!.supportsHistory) { ctx .select(field("body", String::class.java)) .from(definitionsByType[objectType]!!.historyTableName) .where(DSL.field("id", String::class.java).eq(objectKey)) .orderBy(DSL.field("recorded_at").desc()) + .limit(maxResults) .fetch() .getValues(field("body", String::class.java)) } else {