Ошибка очередей Spring @RestController и @RequestParam?JAVA

Программисты JAVA общаются здесь
Anonymous
Ошибка очередей Spring @RestController и @RequestParam?

Сообщение Anonymous »

Я заметил странное поведение моего микросервиса SpringBoot. Я использую Spring MVC, Springboot 3.3.3 и Java 21.
Рассмотрим следующий код в контроллере (с аннотацией @RestController и @Slf4j от lombok). :

Код: Выделить всё

@GetMapping("/test/{id}")
public void getTest(@RequestParam String id) {
log.info("get test: {}", id);
}

DeleteMapping("/test/{id}")
public void deleteTest(@RequestParam String id) throws InterruptedException  {
TimeUnit.SECONDS.sleep(10);
log.info("delete test: {}", id);
}

DeleteMapping("/test/{id}/something")
public void deleteTest2(@RequestParam String id) throws InterruptedException {
TimeUnit.SECONDS.sleep(10);
log.info("delete test 2: {}", id);
}

Если я нажму DELETE /test/someId, а затем GET /test/someId в течение 10 секунд, GET будет ждать, пока DELETE< /code> запрос возвращается. Однако, если я нажму DELETE /test/someId/something, он не будет ждать. Последнее поведение я ожидал бы от обоих.
Кроме того, если я укажу другой идентификатор для DELETE и GET, GET выиграет. Не дождусь. Еще одно интересное наблюдение: если я не использую переданный параметр запроса, например. просто не регистрируйте это и не передавайте никому, оно не будет ждать. То же самое происходит, если пути не указывают параметры запроса и равны.
Ожидается ли то странное поведение ожидания, которое я наблюдал? Или я обнаружил какую-то странную ошибку?

Подробнее здесь: https://stackoverflow.com/questions/790 ... ueuing-bug

Вернуться в «JAVA»