Ошибка организации очереди Spring @RestController и @PathVariable?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка организации очереди Spring @RestController и @PathVariable?

Сообщение Anonymous »

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

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

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

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

@GetMapping("/test/{id}/something")
public void getTestSomething(@PathVariable Integer id) throws InterruptedException {
TimeUnit.SECONDS.sleep(10);
log.info("get test something: {}", id);
}

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

Подробнее здесь: https://stackoverflow.com/questions/790 ... ueuing-bug
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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