Рассмотрим следующий код в контроллере (с аннотацией @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 и GET, GET выиграет. Не дождусь. Еще одно интересное наблюдение: если я не использую переданный параметр запроса, например. просто не регистрируйте это и не передавайте никому, оно не будет ждать. То же самое происходит, если пути не указывают параметры запроса и равны.
Ожидается ли то странное поведение ожидания, которое я наблюдал? Или я обнаружил какую-то странную ошибку?
Подробнее здесь: https://stackoverflow.com/questions/790 ... ueuing-bug