Skip to content

Commit 1883313

Browse files
authored
Update to 4.2 + avoid executing HTTP operations on Vertx thread pool (#8574)
1 parent 7bd8f61 commit 1883313

File tree

2 files changed

+13
-7
lines changed

2 files changed

+13
-7
lines changed

frameworks/Java/micronaut/common/src/main/java/benchmark/controller/AsyncBenchmarkController.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,15 @@
99
import io.micronaut.http.annotation.Controller;
1010
import io.micronaut.http.annotation.Get;
1111
import io.micronaut.http.annotation.QueryValue;
12+
import io.micronaut.scheduling.TaskExecutors;
13+
import jakarta.inject.Named;
1214
import views.fortunes;
1315

1416
import java.util.ArrayList;
1517
import java.util.Comparator;
1618
import java.util.List;
1719
import java.util.concurrent.CompletionStage;
20+
import java.util.concurrent.Executor;
1821

1922
import static java.util.Comparator.comparing;
2023

@@ -24,11 +27,14 @@ public class AsyncBenchmarkController extends AbstractBenchmarkController {
2427

2528
private final AsyncWorldRepository worldRepository;
2629
private final AsyncFortuneRepository fortuneRepository;
30+
private final Executor executor;
2731

2832
public AsyncBenchmarkController(AsyncWorldRepository worldRepository,
29-
AsyncFortuneRepository fortuneRepository) {
33+
AsyncFortuneRepository fortuneRepository,
34+
@Named(TaskExecutors.BLOCKING) Executor executor) {
3035
this.worldRepository = worldRepository;
3136
this.fortuneRepository = fortuneRepository;
37+
this.executor = executor;
3238
}
3339

3440
@Get("/prepare-data-for-test")
@@ -39,7 +45,7 @@ public CompletionStage<?> prepareDataForTest() {
3945
// https://github.com/TechEmpower/FrameworkBenchmarks/wiki/Project-Information-Framework-Tests-Overview#single-database-query
4046
@Get("/db")
4147
public CompletionStage<World> db() {
42-
return worldRepository.findById(randomId());
48+
return worldRepository.findById(randomId()).thenApplyAsync(world -> world, executor);
4349
}
4450

4551
// https://github.com/TechEmpower/FrameworkBenchmarks/wiki/Project-Information-Framework-Tests-Overview#multiple-database-queries
@@ -50,20 +56,20 @@ public CompletionStage<List<World>> queries(@QueryValue String queries) {
5056
for (int i = 0; i < count; i++) {
5157
ids.add(randomId());
5258
}
53-
return worldRepository.findByIds(ids);
59+
return worldRepository.findByIds(ids).thenApplyAsync(worlds -> worlds, executor);
5460
}
5561

5662
// https://github.com/TechEmpower/FrameworkBenchmarks/wiki/Project-Information-Framework-Tests-Overview#fortunes
5763
@Get(value = "/fortunes", produces = "text/html;charset=utf-8")
5864
public CompletionStage<HttpResponse<String>> fortune() {
59-
return fortuneRepository.findAll().thenApply(fortuneList -> {
65+
return fortuneRepository.findAll().thenApplyAsync(fortuneList -> {
6066
List<Fortune> all = new ArrayList<>(fortuneList.size() + 1);
6167
all.add(new Fortune(0, "Additional fortune added at request time."));
6268
all.addAll(fortuneList);
6369
all.sort(comparing(Fortune::message));
6470
String body = fortunes.template(all).render().toString();
6571
return HttpResponse.ok(body).contentType("text/html;charset=utf-8");
66-
});
72+
}, executor);
6773
}
6874

6975
// https://github.com/TechEmpower/FrameworkBenchmarks/wiki/Project-Information-Framework-Tests-Overview#database-updates
@@ -74,7 +80,7 @@ public CompletionStage<List<World>> updates(@QueryValue String queries) {
7480
world.setRandomNumber(randomWorldNumber());
7581
}
7682
worlds.sort(Comparator.comparingInt(World::getId)); // Avoid deadlock
77-
return worldRepository.updateAll(worlds).thenApply(ignore -> worlds);
83+
return worldRepository.updateAll(worlds).thenApplyAsync(ignore -> worlds, executor);
7884
});
7985
}
8086

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
micronautVersion = 4.1.6
1+
micronautVersion = 4.2.0

0 commit comments

Comments
 (0)