Skip to content

Commit 53352ca

Browse files
authored
Upgrade http4k, gradle, java. Tweaks to PGclient implementation (#8845)
* Update versions of gradle, http4k etc * Update versions of gradle in dockerfile * Downgrade pgclient * Upgrade pgclient * update postgres database for pgclient * tweak * tweak to postgres client
1 parent 2765ca2 commit 53352ca

25 files changed

+59
-66
lines changed

frameworks/Kotlin/http4k/build.gradle.kts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
44
import org.jetbrains.kotlin.js.translate.context.Namer.kotlin
55

66
plugins {
7-
kotlin("jvm") version "1.9.22"
7+
kotlin("jvm") version "1.9.23"
88
application
99
}
1010

@@ -35,14 +35,14 @@ allprojects {
3535
}
3636

3737
java {
38-
sourceCompatibility = VERSION_20
39-
targetCompatibility = VERSION_20
38+
sourceCompatibility = VERSION_21
39+
targetCompatibility = VERSION_21
4040
}
4141

4242
tasks {
4343
withType<KotlinCompile> {
4444
kotlinOptions {
45-
jvmTarget = "20"
45+
jvmTarget = "21"
4646
allWarningsAsErrors = true
4747
}
4848
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
dependencies {
22
api(project(":core"))
3-
api("com.zaxxer:HikariCP:5.0.1")
4-
api("org.postgresql:postgresql:42.5.0")
3+
api("com.zaxxer:HikariCP:5.1.0")
4+
api("org.postgresql:postgresql:42.7.3")
55
}
Lines changed: 28 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
import io.vertx.core.Future
2-
import io.vertx.core.Vertx
3-
import io.vertx.core.VertxOptions
42
import io.vertx.pgclient.PgConnectOptions
53
import io.vertx.pgclient.PgPool.client
64
import io.vertx.sqlclient.PoolOptions
@@ -11,13 +9,7 @@ import java.util.Random
119

1210

1311
class PostgresDatabase : Database {
14-
private val queryPool: SqlClient
15-
private val updatePool: SqlClient
16-
17-
private val random = Random()
18-
19-
init {
20-
val vertx = Vertx.vertx(VertxOptions().setPreferNativeTransport(true))
12+
private val dbPool = run {
2113
val connectOptions = PgConnectOptions().apply {
2214
port = 5432
2315
cachePreparedStatements = true
@@ -26,52 +18,53 @@ class PostgresDatabase : Database {
2618
user = "benchmarkdbuser"
2719
password = "benchmarkdbpass"
2820
}
29-
val clientOptions = PoolOptions().setMaxSize(64)
30-
queryPool = client(vertx, connectOptions, clientOptions)
31-
updatePool = client(vertx, connectOptions, clientOptions)
21+
client(connectOptions, PoolOptions().apply { maxSize = 64 })
3222
}
3323

34-
override fun findWorld() =
35-
queryPool.findWorld(random.world()).toCompletionStage().toCompletableFuture().get()
24+
private val random = Random()
25+
26+
override fun findWorld() = dbPool.findWorld(random.world())
3627

37-
override fun loadAll() = queryPool.preparedQuery("SELECT id, randomnumber FROM world ")
28+
override fun loadAll() = dbPool.preparedQuery("SELECT id, randomnumber FROM world")
3829
.execute()
3930
.map { it.map(::toWorld) }
40-
.toCompletionStage().toCompletableFuture().get()
31+
.awaitComplete()
4132

42-
override fun findWorlds(count: Int) =
43-
Future
44-
.all(
45-
(1..count).map { queryPool.findWorld(random.world()) }
46-
).toCompletionStage().toCompletableFuture().get().list<World>()
33+
override fun findWorlds(count: Int) = (1..count)
34+
.map { dbPool.findWorld(random.world()) }
4735

48-
override fun updateWorlds(count: Int) = (1..count).map {
49-
queryPool.findWorld(random.world())
50-
.flatMap { world ->
51-
updatePool.preparedQuery("UPDATE world SET randomnumber = $1 WHERE id = $2")
52-
.execute(Tuple.of(random.world(), world.first))
53-
.map { world }
36+
override fun updateWorlds(count: Int) = (1..count)
37+
.map { World(random.world(), random.world()) }
38+
.onEach {
39+
dbPool
40+
.preparedQuery("SELECT id, randomnumber FROM world WHERE id = $1")
41+
.execute(Tuple.of(it.first))
42+
.map { rowSet ->
43+
val row = rowSet.iterator().next()
44+
row.getInteger(1)
45+
dbPool
46+
.preparedQuery("UPDATE world SET randomnumber = $1 WHERE id = $2")
47+
.execute(Tuple.of(it.second, it.first))
5448
}
55-
.toCompletionStage()
56-
.toCompletableFuture()
57-
.get()
49+
.awaitComplete()
5850
}
5951

60-
override fun fortunes() = queryPool.preparedQuery("SELECT id, message FROM fortune")
52+
override fun fortunes() = dbPool.preparedQuery("SELECT id, message FROM fortune")
6153
.execute()
62-
.map { it.map(::toFortune) }
54+
.map { it.map { Fortune(it.getInteger(0), it.getString(1)) } }
6355
.map { (it + Fortune(0, "Additional fortune added at request time.")) }
6456
.map { it.sortedBy { it.message } }
65-
.toCompletionStage().toCompletableFuture().get()
57+
.awaitComplete()
6658

6759
companion object {
6860
private fun SqlClient.findWorld(id: Int) =
6961
preparedQuery("SELECT id, randomnumber FROM world WHERE id = $1")
7062
.execute(Tuple.of(id))
71-
.map { toWorld(it.single()) }
63+
.map { it.map(::toWorld).first() }
64+
.awaitComplete()
7265
}
7366
}
7467

7568
private fun toWorld(r: Row) = r.getInteger("id") to r.getInteger("randomnumber")
7669

77-
private fun toFortune(it: Row) = Fortune(it.getInteger(0), it.getString(1))
70+
private fun <T> Future<T>.awaitComplete(): T = toCompletionStage().toCompletableFuture().get()

frameworks/Kotlin/http4k/core/build.gradle.kts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ plugins {
44
}
55

66
dependencies {
7-
api(platform("org.http4k:http4k-bom:5.12.0.0"))
8-
api("org.jetbrains.kotlin:kotlin-stdlib:1.9.22")
9-
api("org.jetbrains.kotlin:kotlin-reflect:1.9.22")
7+
api(platform("org.http4k:http4k-bom:5.14.4.0"))
8+
api("org.jetbrains.kotlin:kotlin-stdlib:1.9.23")
9+
api("org.jetbrains.kotlin:kotlin-reflect:1.9.23")
1010
api("org.http4k:http4k-core")
1111
api("org.http4k:http4k-format-argo")
1212
api("org.http4k:http4k-template-rocker")
13-
api("org.apache.commons:commons-lang3:3.12.0")
13+
api("org.apache.commons:commons-lang3:3.14.0")
1414
api("org.cache2k:cache2k-core:2.6.1.Final")
1515

1616
compileOnly("com.fizzed:rocker-compiler:1.4.0")

frameworks/Kotlin/http4k/gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

frameworks/Kotlin/http4k/http4k-apache-graalvm.dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM gradle:8.4.0-jdk21 as gradle
1+
FROM gradle:8.7.0-jdk21 as gradle
22
USER root
33
WORKDIR /http4k
44
COPY build.gradle.kts build.gradle.kts

frameworks/Kotlin/http4k/http4k-apache.dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM gradle:8.4.0-jdk21
1+
FROM gradle:8.7.0-jdk21
22
USER root
33
WORKDIR /http4k
44
COPY build.gradle.kts build.gradle.kts

frameworks/Kotlin/http4k/http4k-apache4.dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM gradle:8.4.0-jdk21
1+
FROM gradle:8.7.0-jdk21
22
USER root
33
WORKDIR /http4k
44
COPY build.gradle.kts build.gradle.kts

frameworks/Kotlin/http4k/http4k-graalvm.dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM gradle:8.4.0-jdk21 as gradle
1+
FROM gradle:8.7.0-jdk21 as gradle
22
USER root
33
WORKDIR /http4k
44
COPY build.gradle.kts build.gradle.kts

frameworks/Kotlin/http4k/http4k-helidon-graalvm.dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM gradle:8.4.0-jdk21 as gradle
1+
FROM gradle:8.7.0-jdk21 as gradle
22
USER root
33
WORKDIR /http4k
44
COPY build.gradle.kts build.gradle.kts

0 commit comments

Comments
 (0)