После сбоя фильтра все дальнейшие запросы на эту конечную точку возвращают «соединение отказано»JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 После сбоя фильтра все дальнейшие запросы на эту конечную точку возвращают «соединение отказано»

Сообщение Anonymous »

Spring Boot 3.4.1, Java 21 < /p>
Я записал фильтр, который делает не более, чем проверить размер запроса на настраиваемый максимум и вернуть 413, если запрос слишком большой . < /p>
@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
@Slf4j
public class RequestSizeFilter implements Filter {

@Value("${fam.max_request_size:10485760}")
private int maxContentBytes;

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException {
try {
if (request.getContentLength() > maxContentBytes) {
throw new RuntimeException();
} else {
chain.doFilter(request, response);
}
} catch (Exception e) {
log.error("Detected overlarge request of %s bytes. Rejecting.".formatted(request.getContentLength()));
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setStatus(HttpServletResponse.SC_REQUEST_ENTITY_TOO_LARGE);
httpResponse.getWriter().println("Request exceeds maximum size of %s bytes".formatted(maxContentBytes));
}

}
}

< /code>
Когда я запускаю свои автоматизированные тесты по конечной точке. Похоже, что проблема заключается в том, что после этого отклонения любой другой тест, который пытается попасть в эту конечную точку, не удается с < /p>
org.springframework.web.reactive.function.client.WebClientRequestException: Connection refused: localhost/[0:0:0:0:0:0:0:1]:8080
at app//org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:137)

Caused by:
io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: localhost/[0:0:0:0:0:0:0:1]:8080

Caused by:
java.net.ConnectException: Connection refused
at java.base/sun.nio.ch.Net.pollConnect(Native Method)
at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:682)
at java.base/sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:973)
at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:336)
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:339)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:1583)

< /code>
Это полные тесты интеграции, поэтому контекст, в котором работает приложение, такой же, как и в производстве. Клиент, который мы используем для достижения этих конечных точек, является пользовательским расширением встроенного класса Spring WebTestClient с базовым URL-адресом и заголовка авторизации по умолчанию для всех запросов. < /P>
Интересный интересный Дело в том, что если я отключаю тест, который запускает этот фильтр, все мои другие тесты пройдут. Кроме того, поскольку упорядочение тестирования не гарантируется, я знаю, что тот же тест, который пройдет перед тестом, который запускает этот фильтр, не удастся, если он работает после. Фильтр должен покинуть сервер в каком -то нестабильном состоянии, но я не могу определить, как и почему. Есть ли мне звонок, чтобы сбросить услугу в состояние, где он готов снова принять входящие соединения?

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

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

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

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

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

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

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