У меня есть сервис, написанный на Java17 и использующий платформу Dropwizard 3.0.8. Он контейнеризуется с помощью Docker. См. снимок экрана со списком зависимостей.
Моя служба вызывает другую службу, но мы не имеем никакого контроля над этой службой.
Иногда внешняя служба отправляет неверные сообщения. ответ или какая-то случайная причина. И моя служба начинает выдавать это исключение, и нам нужно перезапустить весь хост, чтобы это исправить :
2024-10-02_21:30:35.89756 org.eclipse.jetty.http.BadMessageException: 400: Unable to parse URI query
at org.eclipse.jetty.server.Request.getParameters(Request.java:467)
at org.eclipse.jetty.server.Request.getParameterNames(Request.java:1087)
at ch.qos.logback.access.spi.AccessEvent.buildRequestParameterMap(AccessEvent.java:353)
at ch.qos.logback.access.spi.AccessEvent.getRequestParameterMap(AccessEvent.java:374)
at ch.qos.logback.access.spi.AccessEvent.prepareForDeferredProcessing(AccessEvent.java:615)
at io.dropwizard.request.logging.async.AsyncAccessEventAppenderFactory$1.preprocess(AsyncAccessEventAppenderFactory.java:22)
at io.dropwizard.request.logging.async.AsyncAccessEventAppenderFactory$1.preprocess(AsyncAccessEventAppenderFactory.java:19)
at ch.qos.logback.core.AsyncAppenderBase.append(AsyncAppenderBase.java:165)
at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAppenderBase.java:85)
at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:51)
at ch.qos.logback.access.jetty.RequestLogImpl.log(RequestLogImpl.java:269)
at org.eclipse.jetty.server.HttpChannel.onCompleted(HttpChannel.java:911)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:467)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:555)
at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:410)
at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:164)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
at java.base/java.lang.Thread.run(Thread.java:842)
Caused by: org.eclipse.jetty.util.Utf8Appendable$NotUtf8Exception: Not valid UTF8! Incomplete % encoding
at org.eclipse.jetty.util.UrlEncoded.decodeUtf8To(UrlEncoded.java:359)
at org.eclipse.jetty.util.UrlEncoded.decodeUtf8To(UrlEncoded.java:296)
at org.eclipse.jetty.http.HttpURI.decodeQueryTo(HttpURI.java:945)
at org.eclipse.jetty.server.Request.extractQueryParameters(Request.java:498)
at org.eclipse.jetty.server.Request.getParameters(Request.java:463)
org.eclipse.jetty.http.BadMessageException: 400: Unable to parse URI query
at org.eclipse.jetty.server.Request.getParameters(Request.java:467)
at org.eclipse.jetty.server.Request.getParameterNames(Request.java:1087)
at ch.qos.logback.access.spi.AccessEvent.buildRequestParameterMap(AccessEvent.java:353)
at ch.qos.logback.access.spi.AccessEvent.getRequestParameterMap(AccessEvent.java:374)
at ch.qos.logback.access.spi.AccessEvent.prepareForDeferredProcessing(AccessEvent.java:615)
at io.dropwizard.request.logging.async.AsyncAccessEventAppenderFactory$1.preprocess(AsyncAccessEventAppenderFactory.java:22)
at io.dropwizard.request.logging.async.AsyncAccessEventAppenderFactory$1.preprocess(AsyncAccessEventAppenderFactory.java:19)
at ch.qos.logback.core.AsyncAppenderBase.append(AsyncAppenderBase.java:165)
at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAppenderBase.java:85)
at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:51)
at ch.qos.logback.access.jetty.RequestLogImpl.log(RequestLogImpl.java:269)
at org.eclipse.jetty.server.HttpChannel.onCompleted(HttpChannel.java:911)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:467)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:555)
at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:410)
at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:164)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
at java.base/java.lang.Thread.run(Thread.java:842)
Caused by: java.lang.IllegalArgumentException: Not valid encoding '%./'
at org.eclipse.jetty.util.UrlEncoded.decodeHexByte(UrlEncoded.java:903)
at org.eclipse.jetty.util.UrlEncoded.decodeUtf8To(UrlEncoded.java:355)
at org.eclipse.jetty.util.UrlEncoded.decodeUtf8To(UrlEncoded.java:296)
at org.eclipse.jetty.http.HttpURI.decodeQueryTo(HttpURI.java:945)
at org.eclipse.jetty.server.Request.extractQueryParameters(Request.java:498)
at org.eclipse.jetty.server.Request.getParameters(Request.java:463)
... 28 more
org.eclipse.jetty.io.RuntimeIOException: java.io.IOException: Committed before 100 Continues
at org.eclipse.jetty.server.Request.extractFormParameters(Request.java:600)
at org.eclipse.jetty.server.Request.extractContentParameters(Request.java:544)
at org.eclipse.jetty.server.Request.getParameters(Request.java:447)
at org.eclipse.jetty.server.Request.getParameterNames(Request.java:1087)
at ch.qos.logback.access.spi.AccessEvent.buildRequestParameterMap(AccessEvent.java:353)
at ch.qos.logback.access.spi.AccessEvent.getRequestParameterMap(AccessEvent.java:374)
at ch.qos.logback.access.spi.AccessEvent.prepareForDeferredProcessing(AccessEvent.java:615)
at io.dropwizard.request.logging.async.AsyncAccessEventAppenderFactory$1.preprocess(AsyncAccessEventAppenderFactory.java:22)
at io.dropwizard.request.logging.async.AsyncAccessEventAppenderFactory$1.preprocess(AsyncAccessEventAppenderFactory.java:19)
Пожалуйста, дайте ценное предложение, чтобы эффективно решить эту проблему. Также обратите внимание, что мы не можем обновить версию Dropwizard.
У меня есть сервис, написанный на Java17 и использующий платформу [b]Dropwizard 3.0.8[/b]. Он контейнеризуется с помощью Docker. См. снимок экрана со списком зависимостей. Моя служба вызывает другую службу, но мы не имеем никакого контроля над этой службой. Иногда внешняя служба отправляет неверные сообщения. ответ или какая-то случайная причина. И моя служба начинает выдавать это исключение, и [b]нам нужно перезапустить весь хост, чтобы это исправить[/b] : [code]2024-10-02_21:30:35.89756 org.eclipse.jetty.http.BadMessageException: 400: Unable to parse URI query at org.eclipse.jetty.server.Request.getParameters(Request.java:467) at org.eclipse.jetty.server.Request.getParameterNames(Request.java:1087) at ch.qos.logback.access.spi.AccessEvent.buildRequestParameterMap(AccessEvent.java:353) at ch.qos.logback.access.spi.AccessEvent.getRequestParameterMap(AccessEvent.java:374) at ch.qos.logback.access.spi.AccessEvent.prepareForDeferredProcessing(AccessEvent.java:615) at io.dropwizard.request.logging.async.AsyncAccessEventAppenderFactory$1.preprocess(AsyncAccessEventAppenderFactory.java:22) at io.dropwizard.request.logging.async.AsyncAccessEventAppenderFactory$1.preprocess(AsyncAccessEventAppenderFactory.java:19) at ch.qos.logback.core.AsyncAppenderBase.append(AsyncAppenderBase.java:165) at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAppenderBase.java:85) at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:51) at ch.qos.logback.access.jetty.RequestLogImpl.log(RequestLogImpl.java:269) at org.eclipse.jetty.server.HttpChannel.onCompleted(HttpChannel.java:911) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:467) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:555) at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:410) at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:164) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) at java.base/java.lang.Thread.run(Thread.java:842) Caused by: org.eclipse.jetty.util.Utf8Appendable$NotUtf8Exception: Not valid UTF8! Incomplete % encoding at org.eclipse.jetty.util.UrlEncoded.decodeUtf8To(UrlEncoded.java:359) at org.eclipse.jetty.util.UrlEncoded.decodeUtf8To(UrlEncoded.java:296) at org.eclipse.jetty.http.HttpURI.decodeQueryTo(HttpURI.java:945) at org.eclipse.jetty.server.Request.extractQueryParameters(Request.java:498) at org.eclipse.jetty.server.Request.getParameters(Request.java:463) org.eclipse.jetty.http.BadMessageException: 400: Unable to parse URI query at org.eclipse.jetty.server.Request.getParameters(Request.java:467) at org.eclipse.jetty.server.Request.getParameterNames(Request.java:1087) at ch.qos.logback.access.spi.AccessEvent.buildRequestParameterMap(AccessEvent.java:353) at ch.qos.logback.access.spi.AccessEvent.getRequestParameterMap(AccessEvent.java:374) at ch.qos.logback.access.spi.AccessEvent.prepareForDeferredProcessing(AccessEvent.java:615) at io.dropwizard.request.logging.async.AsyncAccessEventAppenderFactory$1.preprocess(AsyncAccessEventAppenderFactory.java:22) at io.dropwizard.request.logging.async.AsyncAccessEventAppenderFactory$1.preprocess(AsyncAccessEventAppenderFactory.java:19) at ch.qos.logback.core.AsyncAppenderBase.append(AsyncAppenderBase.java:165) at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAppenderBase.java:85) at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:51) at ch.qos.logback.access.jetty.RequestLogImpl.log(RequestLogImpl.java:269) at org.eclipse.jetty.server.HttpChannel.onCompleted(HttpChannel.java:911) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:467) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:555) at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:410) at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:164) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) at java.base/java.lang.Thread.run(Thread.java:842) Caused by: java.lang.IllegalArgumentException: Not valid encoding '%./' at org.eclipse.jetty.util.UrlEncoded.decodeHexByte(UrlEncoded.java:903) at org.eclipse.jetty.util.UrlEncoded.decodeUtf8To(UrlEncoded.java:355) at org.eclipse.jetty.util.UrlEncoded.decodeUtf8To(UrlEncoded.java:296) at org.eclipse.jetty.http.HttpURI.decodeQueryTo(HttpURI.java:945) at org.eclipse.jetty.server.Request.extractQueryParameters(Request.java:498) at org.eclipse.jetty.server.Request.getParameters(Request.java:463) ... 28 more org.eclipse.jetty.io.RuntimeIOException: java.io.IOException: Committed before 100 Continues at org.eclipse.jetty.server.Request.extractFormParameters(Request.java:600) at org.eclipse.jetty.server.Request.extractContentParameters(Request.java:544) at org.eclipse.jetty.server.Request.getParameters(Request.java:447) at org.eclipse.jetty.server.Request.getParameterNames(Request.java:1087) at ch.qos.logback.access.spi.AccessEvent.buildRequestParameterMap(AccessEvent.java:353) at ch.qos.logback.access.spi.AccessEvent.getRequestParameterMap(AccessEvent.java:374) at ch.qos.logback.access.spi.AccessEvent.prepareForDeferredProcessing(AccessEvent.java:615) at io.dropwizard.request.logging.async.AsyncAccessEventAppenderFactory$1.preprocess(AsyncAccessEventAppenderFactory.java:22) at io.dropwizard.request.logging.async.AsyncAccessEventAppenderFactory$1.preprocess(AsyncAccessEventAppenderFactory.java:19) [/code] Пожалуйста, дайте ценное предложение, чтобы эффективно решить эту проблему. Также обратите внимание, что [b]мы не можем обновить версию Dropwizard[/b].