Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Spontaneous error on accessing swagger #4627

Closed
kaganem opened this issue Oct 16, 2019 · 8 comments · Fixed by #4998
Closed

Spontaneous error on accessing swagger #4627

kaganem opened this issue Oct 16, 2019 · 8 comments · Fixed by #4998
Assignees
Labels
kind/bug Something isn't working
Milestone

Comments

@kaganem
Copy link

kaganem commented Oct 16, 2019

Describe the bug
Spontaneous error on accessing swagger

Expected behavior
Swagger loads OK, and shows api doc

Actual behavior
Fails to load static parts of content. Error is strange NumberFormatException - no idea, why, how, etc.

304 | GET | localhost:8080 | /swagger-ui/
200 | GET | localhost:8080 | swagger-ui.css
500 | GET | localhost:8080 | swagger-ui-bundle.js
500 | GET | localhost:8080 | swagger-ui-standalone-preset.js
200 | GET | localhost:8080 | favicon-16x16.png

Using ZuluJDK 8

ERROR [io.qua.ver.htt.run.QuarkusErrorHandler] (vert.x-eventloop-thread-23) HTTP Request to /swagger-ui/swagger-ui-standalone-preset.js failed, error id: be50ee70-755d-48de-9625-64c6f95c99c7-3: java.lang.NumberFormatException: multiple points
	at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1890)
	at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
	at java.lang.Double.parseDouble(Double.java:538)
	at java.text.DigitList.getDouble(DigitList.java:169)
	at java.text.DecimalFormat.parse(DecimalFormat.java:2089)
	at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:1869)
	at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1514)
	at java.text.DateFormat.parse(DateFormat.java:364)
	at io.vertx.ext.web.handler.impl.StaticHandlerImpl.parseDate(StaticHandlerImpl.java:606)
	at io.vertx.ext.web.handler.impl.StaticHandlerImpl.access$200(StaticHandlerImpl.java:53)
	at io.vertx.ext.web.handler.impl.StaticHandlerImpl$CacheEntry.shouldUseCached(StaticHandlerImpl.java:753)
	at io.vertx.ext.web.handler.impl.StaticHandlerImpl.sendStatic(StaticHandlerImpl.java:182)
	at io.vertx.ext.web.handler.impl.StaticHandlerImpl.handle(StaticHandlerImpl.java:148)
	at io.vertx.ext.web.handler.impl.StaticHandlerImpl.handle(StaticHandlerImpl.java:53)
	at io.quarkus.swaggerui.runtime.SwaggerUiRecorder$1.handle(SwaggerUiRecorder.java:30)
	at io.quarkus.swaggerui.runtime.SwaggerUiRecorder$1.handle(SwaggerUiRecorder.java:16)
	at io.quarkus.vertx.http.runtime.VertxHttpRecorder$ResumeHandler.handle(VertxHttpRecorder.java:572)
	at io.quarkus.vertx.http.runtime.VertxHttpRecorder$ResumeHandler.handle(VertxHttpRecorder.java:559)
	at io.vertx.ext.web.impl.RouteImpl.handleContext(RouteImpl.java:276)
	at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:124)
	at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:130)
	at io.quarkus.vertx.http.deployment.devmode.VertxHotReplacementSetup.handleHotReplacementRequest(VertxHotReplacementSetup.java:40)
	at io.vertx.ext.web.impl.RouteImpl.handleContext(RouteImpl.java:276)
	at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:124)
	at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:130)
	at io.quarkus.vertx.http.runtime.cors.CORSFilter.handle(CORSFilter.java:79)
	at io.quarkus.vertx.http.runtime.cors.CORSFilter.handle(CORSFilter.java:16)
	at io.vertx.ext.web.impl.RouteImpl.handleContext(RouteImpl.java:276)
	at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:124)
	at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:130)
	at io.quarkus.vertx.http.deployment.devmode.VertxHotReplacementSetup.handleHotReplacementRequest(VertxHotReplacementSetup.java:40)
	at io.vertx.ext.web.impl.RouteImpl.handleContext(RouteImpl.java:276)
	at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:124)
	at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:130)
	at io.vertx.ext.web.impl.RouterImpl.handle(RouterImpl.java:79)
	at io.vertx.ext.web.impl.RouterImpl.handle(RouterImpl.java:39)
	at io.quarkus.vertx.http.runtime.VertxHttpRecorder$1.handle(VertxHttpRecorder.java:83)
	at io.quarkus.vertx.http.runtime.VertxHttpRecorder$1.handle(VertxHttpRecorder.java:74)
	at io.vertx.core.http.impl.WebSocketRequestHandler.handle(WebSocketRequestHandler.java:50)
	at io.vertx.core.http.impl.WebSocketRequestHandler.handle(WebSocketRequestHandler.java:32)
	at io.vertx.core.http.impl.Http1xServerConnection.handleMessage(Http1xServerConnection.java:136)
	at io.vertx.core.impl.ContextImpl.executeTask(ContextImpl.java:369)
	at io.vertx.core.impl.EventLoopContext.execute(EventLoopContext.java:43)
	at io.vertx.core.impl.ContextImpl.executeFromIO(ContextImpl.java:232)
	at io.vertx.core.net.impl.VertxHandler.channelRead(VertxHandler.java:173)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
	at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93)
	at io.netty.handler.codec.http.websocketx.extensions.WebSocketServerExtensionHandler.channelRead(WebSocketServerExtensionHandler.java:102)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:328)
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:302)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1421)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930)
	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:697)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:632)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:549)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:511)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:918)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.lang.Thread.run(Thread.java:748)

Using OpenJDK-11

ERROR [io.qua.ver.htt.run.QuarkusErrorHandler] (vert.x-eventloop-thread-0) HTTP Request to /swagger-ui/swagger-ui-bundle.js failed, error id: 47791a3f-5c4a-409a-83d6-cf902fdb71ea-2: java.lang.NumberFormatException: multiple points
	at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1890)
	at java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
	at java.base/java.lang.Double.parseDouble(Double.java:543)
	at java.base/java.text.DigitList.getDouble(DigitList.java:169)
	at java.base/java.text.DecimalFormat.parse(DecimalFormat.java:2128)
	at java.base/java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:1933)
	at java.base/java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1541)
	at java.base/java.text.DateFormat.parse(DateFormat.java:393)
	at io.vertx.ext.web.handler.impl.StaticHandlerImpl.parseDate(StaticHandlerImpl.java:606)
	at io.vertx.ext.web.handler.impl.StaticHandlerImpl.access$200(StaticHandlerImpl.java:53)
	at io.vertx.ext.web.handler.impl.StaticHandlerImpl$CacheEntry.shouldUseCached(StaticHandlerImpl.java:753)
	at io.vertx.ext.web.handler.impl.StaticHandlerImpl.sendStatic(StaticHandlerImpl.java:182)
	at io.vertx.ext.web.handler.impl.StaticHandlerImpl.handle(StaticHandlerImpl.java:148)
	at io.vertx.ext.web.handler.impl.StaticHandlerImpl.handle(StaticHandlerImpl.java:53)
	at io.quarkus.swaggerui.runtime.SwaggerUiRecorder$1.handle(SwaggerUiRecorder.java:30)
	at io.quarkus.swaggerui.runtime.SwaggerUiRecorder$1.handle(SwaggerUiRecorder.java:16)
	at io.quarkus.vertx.http.runtime.VertxHttpRecorder$ResumeHandler.handle(VertxHttpRecorder.java:572)
	at io.quarkus.vertx.http.runtime.VertxHttpRecorder$ResumeHandler.handle(VertxHttpRecorder.java:559)
	at io.vertx.ext.web.impl.RouteImpl.handleContext(RouteImpl.java:276)
	at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:124)
	at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:130)
	at io.quarkus.vertx.http.deployment.devmode.VertxHotReplacementSetup.handleHotReplacementRequest(VertxHotReplacementSetup.java:40)
	at io.vertx.ext.web.impl.RouteImpl.handleContext(RouteImpl.java:276)
	at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:124)
	at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:130)
	at io.quarkus.vertx.http.runtime.cors.CORSFilter.handle(CORSFilter.java:79)
	at io.quarkus.vertx.http.runtime.cors.CORSFilter.handle(CORSFilter.java:16)
	at io.vertx.ext.web.impl.RouteImpl.handleContext(RouteImpl.java:276)
	at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:124)
	at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:130)
	at io.quarkus.vertx.http.deployment.devmode.VertxHotReplacementSetup.handleHotReplacementRequest(VertxHotReplacementSetup.java:40)
	at io.vertx.ext.web.impl.RouteImpl.handleContext(RouteImpl.java:276)
	at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:124)
	at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:130)
	at io.vertx.ext.web.impl.RouterImpl.handle(RouterImpl.java:79)
	at io.vertx.ext.web.impl.RouterImpl.handle(RouterImpl.java:39)
	at io.quarkus.vertx.http.runtime.VertxHttpRecorder$1.handle(VertxHttpRecorder.java:83)
	at io.quarkus.vertx.http.runtime.VertxHttpRecorder$1.handle(VertxHttpRecorder.java:74)
	at io.vertx.core.http.impl.WebSocketRequestHandler.handle(WebSocketRequestHandler.java:50)
	at io.vertx.core.http.impl.WebSocketRequestHandler.handle(WebSocketRequestHandler.java:32)
	at io.vertx.core.http.impl.Http1xServerConnection.handleMessage(Http1xServerConnection.java:136)
	at io.vertx.core.impl.ContextImpl.executeTask(ContextImpl.java:369)
	at io.vertx.core.impl.EventLoopContext.execute(EventLoopContext.java:43)
	at io.vertx.core.impl.ContextImpl.executeFromIO(ContextImpl.java:232)
	at io.vertx.core.net.impl.VertxHandler.channelRead(VertxHandler.java:173)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
	at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93)
	at io.netty.handler.codec.http.websocketx.extensions.WebSocketServerExtensionHandler.channelRead(WebSocketServerExtensionHandler.java:102)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:328)
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:302)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1421)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930)
	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:697)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:632)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:549)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:511)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:918)
	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:834)

Using OpenJDK-8

ERROR [io.qua.ver.htt.run.QuarkusErrorHandler] (vert.x-eventloop-thread-22) HTTP Request to /swagger-ui/swagger-ui-bundle.js failed, error id: f221cf6e-760d-4e58-9cc3-473312bac49b-1: java.lang.NumberFormatException: For input string: ".201916E.0E"
	at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
	at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
	at java.lang.Double.parseDouble(Double.java:538)
	at java.text.DigitList.getDouble(DigitList.java:169)
	at java.text.DecimalFormat.parse(DecimalFormat.java:2089)
	at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:1869)
	at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1514)
	at java.text.DateFormat.parse(DateFormat.java:364)
	at io.vertx.ext.web.handler.impl.StaticHandlerImpl.parseDate(StaticHandlerImpl.java:606)
	at io.vertx.ext.web.handler.impl.StaticHandlerImpl.access$200(StaticHandlerImpl.java:53)
	at io.vertx.ext.web.handler.impl.StaticHandlerImpl$CacheEntry.shouldUseCached(StaticHandlerImpl.java:753)
	at io.vertx.ext.web.handler.impl.StaticHandlerImpl.sendStatic(StaticHandlerImpl.java:182)
	at io.vertx.ext.web.handler.impl.StaticHandlerImpl.handle(StaticHandlerImpl.java:148)
	at io.vertx.ext.web.handler.impl.StaticHandlerImpl.handle(StaticHandlerImpl.java:53)
	at io.quarkus.swaggerui.runtime.SwaggerUiRecorder$1.handle(SwaggerUiRecorder.java:30)
	at io.quarkus.swaggerui.runtime.SwaggerUiRecorder$1.handle(SwaggerUiRecorder.java:16)
	at io.quarkus.vertx.http.runtime.VertxHttpRecorder$ResumeHandler.handle(VertxHttpRecorder.java:572)
	at io.quarkus.vertx.http.runtime.VertxHttpRecorder$ResumeHandler.handle(VertxHttpRecorder.java:559)
	at io.vertx.ext.web.impl.RouteImpl.handleContext(RouteImpl.java:276)
	at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:124)
	at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:130)
	at io.quarkus.vertx.http.deployment.devmode.VertxHotReplacementSetup.handleHotReplacementRequest(VertxHotReplacementSetup.java:40)
	at io.vertx.ext.web.impl.RouteImpl.handleContext(RouteImpl.java:276)
	at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:124)
	at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:130)
	at io.quarkus.vertx.http.runtime.cors.CORSFilter.handle(CORSFilter.java:79)
	at io.quarkus.vertx.http.runtime.cors.CORSFilter.handle(CORSFilter.java:16)
	at io.vertx.ext.web.impl.RouteImpl.handleContext(RouteImpl.java:276)
	at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:124)
	at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:130)
	at io.quarkus.vertx.http.deployment.devmode.VertxHotReplacementSetup.handleHotReplacementRequest(VertxHotReplacementSetup.java:40)
	at io.vertx.ext.web.impl.RouteImpl.handleContext(RouteImpl.java:276)
	at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:124)
	at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:130)
	at io.vertx.ext.web.impl.RouterImpl.handle(RouterImpl.java:79)
	at io.vertx.ext.web.impl.RouterImpl.handle(RouterImpl.java:39)
	at io.quarkus.vertx.http.runtime.VertxHttpRecorder$1.handle(VertxHttpRecorder.java:83)
	at io.quarkus.vertx.http.runtime.VertxHttpRecorder$1.handle(VertxHttpRecorder.java:74)
	at io.vertx.core.http.impl.WebSocketRequestHandler.handle(WebSocketRequestHandler.java:50)
	at io.vertx.core.http.impl.WebSocketRequestHandler.handle(WebSocketRequestHandler.java:32)
	at io.vertx.core.http.impl.Http1xServerConnection.handleMessage(Http1xServerConnection.java:136)
	at io.vertx.core.impl.ContextImpl.executeTask(ContextImpl.java:369)
	at io.vertx.core.impl.EventLoopContext.execute(EventLoopContext.java:43)
	at io.vertx.core.impl.ContextImpl.executeFromIO(ContextImpl.java:232)
	at io.vertx.core.net.impl.VertxHandler.channelRead(VertxHandler.java:173)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
	at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93)
	at io.netty.handler.codec.http.websocketx.extensions.WebSocketServerExtensionHandler.channelRead(WebSocketServerExtensionHandler.java:102)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:328)
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:302)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1421)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930)
	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:697)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:632)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:549)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:511)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:918)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.lang.Thread.run(Thread.java:748)

To Reproduce
Steps to reproduce the behavior:

  1. follow getting started guide
  2. add quarkus-smallrye-openapi extension
  3. start
  4. try accessing http://localhost:8080/swagger-ui/ couple times.

Configuration
no config

Environment:

  • Linux archlinux 5.3.6-zen1-1-zen Switch to the Maven distributed copy of the SubstrateVM annotations #1 ZEN SMP PREEMPT Fri Oct 11 18:28:20 UTC 2019 x86_64 GNU/Linux
  • openjdk version "1.8.0_222"
    OpenJDK Runtime Environment (Zulu 8.40.0.25-CA-linux64) (build 1.8.0_222-b10)
    OpenJDK 64-Bit Server VM (Zulu 8.40.0.25-CA-linux64) (build 25.222-b10, mixed mode)
  • openjdk version "11.0.4" 2019-07-16
    OpenJDK Runtime Environment (build 11.0.4+11)
    OpenJDK 64-Bit Server VM (build 11.0.4+11, mixed mode)
  • openjdk version "1.8.0_222"
    OpenJDK Runtime Environment (build 1.8.0_222-b05)
    OpenJDK 64-Bit Server VM (build 25.222-b05, mixed mode)
  • Quarkus 0.25.0

Additional context
Also has spontenious errors accessing REST endpoints after migration to 0.25.0 from 0.22.0 - will try to understand reason for it tomorrow.

@kaganem kaganem added the kind/bug Something isn't working label Oct 16, 2019
@jaikiran
Copy link
Member

jaikiran commented Oct 17, 2019

It looks like the if-modified-since header being sent, in the request for the resource, isn't in expected date format. Can you enable brower's console and get the network screenshot to show what request headers are being sent when this happens?

Having said that, I think the StaticHandlerImpl in vert.x needs to be lenient in such cases and re-serve the content instead of throwing an error IMO.

@jaikiran
Copy link
Member

FYI vert-x3/vertx-web#1423

@cescoffier cescoffier self-assigned this Oct 17, 2019
@kaganem
Copy link
Author

kaganem commented Oct 17, 2019

First request - 304 - thought we've been there
request_screen_1

500 - here comes trouble. And yeah you're right there is "If-Modified-Since" header.
request_screen_2

500 - same here
request_screen_3

304 - Strange, but no problem here
request_screen_4

200 - sure it's OK
request_screen_5

Overall, OK. There must be a problem with header, but how can I overcome it at the moment. I'd like to use 0.25.0, but for now it's a deal-breaker. I'm not fluent with Vert.X and low level of quarkus, need help here.

@jaikiran
Copy link
Member

So the underlying issue got fixed a few minutes back in vert.x vert-x3/vertx-web#1423 and it seems it's being targeted for 3.8.3 release of that library. I don't know when that is and whether or not that will be in time for next Quarkus release.
In the meantime you can probably disable caching in Firefox (see if it allows disabling caching for certain domains) and that should prevent Firefox from sending the If-modified-since header and should bypass this issue. Having said that, I'm curious why Firefox seems to be sending a header value which cannot be parsed (but that can be tackled separately).

@kaganem
Copy link
Author

kaganem commented Oct 17, 2019

Fired up Chromium 77.0.3865.120 - no problemo :)
Wrong behavior occurs on Firefox 69.0.3. So until 3.8.3 released will switch to Chromium.

Closing ticket, will reopen if next release won't fix issue.

@jaikiran
Copy link
Member

I spent some more time on this because it would be really surprising if Firefox was sending invalid header values for something as basic as If-Modified-Since. I think the root cause of this issue is this vert-x3/vertx-web#1429.

I think this issue needs to be reopened so that @gsmet or someone can track a vert.x release back to this and prioritize it accordingly.

Thank you for reporting this.

@kaganem kaganem reopened this Oct 18, 2019
@kaganem
Copy link
Author

kaganem commented Oct 18, 2019

Reopening for tracking purpose, as suggested by @jaikiran

@jaikiran
Copy link
Member

This is reproducible in our testsuite with this test case #4679

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants