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

StaticContentSupport problem in helidon-se #1069

Closed
piusalfred opened this issue Sep 28, 2019 · 6 comments
Closed

StaticContentSupport problem in helidon-se #1069

piusalfred opened this issue Sep 28, 2019 · 6 comments
Assignees
Labels
bug Something isn't working P1 webserver
Projects

Comments

@piusalfred
Copy link

I have a helidon-se powered static website. It works fine except that whenever I pull the server logs there a lot of runtime exception I can not trace.

Environment Details

  • Helidon Version: 1.2.0
  • Helidon SE
  • JDK version: 11.0.4
  • OS: Bionic Beaver 18.04

Problem Description

After keeping the Webserver running for a time, runtime exceptions are thrown

stack trace

Sep 28 08:46:09 tanganyikabeach systemd[1]: Started The Tanganyika Beach Resort Web Server.
Sep 28 08:46:09 tanganyikabeach java[26739]: [DEBUG] (main) Using Console logging
Sep 28 08:46:10 tanganyikabeach java[26739]: 2019.09.28 08:46:10 INFO io.helidon.webserver.NettyWebServer Thread[main,5,main]: Version: 1.2.0
Sep 28 08:46:10 tanganyikabeach java[26739]: 2019.09.28 08:46:10 INFO io.helidon.webserver.NettyWebServer Thread[nioEventLoopGroup-2-1,10,main]: Channel '@default' started: [id: 0x504b606f, L:/0:0:0:0:0:0:0:0:80
Sep 28 08:46:10 tanganyikabeach java[26739]: WEB server is up! http://localhost:8080/greet
Sep 28 08:49:10 tanganyikabeach java[26739]: 2019.09.28 08:49:10 WARNING io.helidon.webserver.RequestRouting Thread[nioEventLoopGroup-3-2,10,main]: Default error handler: Unhandled exception encountered.
Sep 28 08:49:10 tanganyikabeach java[26739]: java.util.concurrent.ExecutionException: Unhandled 'cause' of this exception encountered.
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.RequestRouting$RoutedRequest.defaultHandler(RequestRouting.java:365)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.RequestRouting$RoutedRequest.nextNoCheck(RequestRouting.java:351)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.RequestRouting$RoutedRequest.next(RequestRouting.java:305)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.media.jsonp.server.JsonSupport.accept(JsonSupport.java:114)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.RequestRouting$RoutedRequest.next(RequestRouting.java:303)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.metrics.MetricsSupport$MetricsContextHandler.accept(MetricsSupport.java:507)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.RequestRouting$RoutedRequest.next(RequestRouting.java:303)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.metrics.MetricsSupport.lambda$configureVendorMetrics$3(MetricsSupport.java:299)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.RequestRouting$RoutedRequest.next(RequestRouting.java:303)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.media.jsonp.server.JsonSupport.accept(JsonSupport.java:114)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.RequestRouting$RoutedRequest.next(RequestRouting.java:303)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.WebTracingConfig$RequestSpanHandler.accept(WebTracingConfig.java:233)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.RequestRouting$RoutedRequest.next(RequestRouting.java:303)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.common.context.Contexts.runInContext(Contexts.java:98)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.RequestRouting.route(RequestRouting.java:76)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.ForwardingHandler.channelRead0(ForwardingHandler.java:138)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:337)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:323)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:297)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:337)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1408)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:677)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:612)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:529)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:491)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:905)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at java.base/java.lang.Thread.run(Thread.java:834)
Sep 28 08:49:10 tanganyikabeach java[26739]: Caused by: java.lang.IllegalArgumentException: Could not parse '*/*\r\nAccept-Language: zh-cn\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/201001
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.common.http.MediaType.parse(MediaType.java:225)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.HashRequestHeaders.acceptedTypes(HashRequestHeaders.java:118)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.ContentTypeSelector.determine(ContentTypeSelector.java:223)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.StaticContentHandler.processContentType(StaticContentHandler.java:250)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.ClassPathContentHandler.doHandle(ClassPathContentHandler.java:101)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.StaticContentHandler.handle(StaticContentHandler.java:88)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.StaticContentSupport.lambda$update$0(StaticContentSupport.java:64)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.RequestRouting$RoutedRequest.next(RequestRouting.java:303)
Sep 28 08:49:10 tanganyikabeach java[26739]:         ... 34 more
Sep 28 08:49:10 tanganyikabeach java[26739]: Caused by: java.lang.IllegalStateException: Unexpected character: ;
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.common.http.MediaType.checkState(MediaType.java:266)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.common.http.MediaType$Tokenizer.consumeCharacter(MediaType.java:533)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.common.http.MediaType.parse(MediaType.java:200)
Sep 28 08:49:10 tanganyikabeach java[26739]:         ... 52 more
Sep 28 08:49:10 tanganyikabeach java[26739]: 2019.09.28 08:49:10 WARNING io.helidon.webserver.RequestRouting Thread[nioEventLoopGroup-3-1,10,main]: Default error handler: Unhandled exception encountered.
Sep 28 08:49:10 tanganyikabeach java[26739]: java.util.concurrent.ExecutionException: Unhandled 'cause' of this exception encountered.
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.RequestRouting$RoutedRequest.defaultHandler(RequestRouting.java:365)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.RequestRouting$RoutedRequest.nextNoCheck(RequestRouting.java:351)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.RequestRouting$RoutedRequest.next(RequestRouting.java:305)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.media.jsonp.server.JsonSupport.accept(JsonSupport.java:114)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.RequestRouting$RoutedRequest.next(RequestRouting.java:303)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.metrics.MetricsSupport$MetricsContextHandler.accept(MetricsSupport.java:507)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.RequestRouting$RoutedRequest.next(RequestRouting.java:303)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.metrics.MetricsSupport.lambda$configureVendorMetrics$3(MetricsSupport.java:299)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.RequestRouting$RoutedRequest.next(RequestRouting.java:303)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.media.jsonp.server.JsonSupport.accept(JsonSupport.java:114)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.RequestRouting$RoutedRequest.next(RequestRouting.java:303)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.WebTracingConfig$RequestSpanHandler.accept(WebTracingConfig.java:233)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.RequestRouting$RoutedRequest.next(RequestRouting.java:303)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.common.context.Contexts.runInContext(Contexts.java:98)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.RequestRouting.route(RequestRouting.java:76)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.ForwardingHandler.channelRead0(ForwardingHandler.java:138)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:337)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:323)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:297)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:337)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1408)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:677)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:612)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:529)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:491)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:905)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at java.base/java.lang.Thread.run(Thread.java:834)
Sep 28 08:49:10 tanganyikabeach java[26739]: Caused by: java.lang.IllegalArgumentException: Could not parse '*/*\r\nAccept-Language: zh-cn\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/201001
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.common.http.MediaType.parse(MediaType.java:225)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.HashRequestHeaders.acceptedTypes(HashRequestHeaders.java:118)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.ContentTypeSelector.determine(ContentTypeSelector.java:223)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.StaticContentHandler.processContentType(StaticContentHandler.java:250)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.ClassPathContentHandler.doHandle(ClassPathContentHandler.java:101)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.StaticContentHandler.handle(StaticContentHandler.java:88)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.StaticContentSupport.lambda$update$0(StaticContentSupport.java:64)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.webserver.RequestRouting$RoutedRequest.next(RequestRouting.java:303)
Sep 28 08:49:10 tanganyikabeach java[26739]:         ... 34 more
Sep 28 08:49:10 tanganyikabeach java[26739]: Caused by: java.lang.IllegalStateException: Unexpected character: ;
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.common.http.MediaType.checkState(MediaType.java:266)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.common.http.MediaType$Tokenizer.consumeCharacter(MediaType.java:533)
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.common.http.MediaType.parse(MediaType.java:200)
Sep 28 08:49:10 tanganyikabeach java[26739]:         ... 52 more
lines 6841-6894/6894 (END)

Steps to reproduce

server code

public final class Main {

    /**
     * Cannot be instantiated.
     */
    private Main() {
    }

    /**
     * Application main entry point.
     *
     * @param args command line arguments.
     * @throws IOException if there are problems reading logging properties
     */
    public static void main(final String[] args) throws IOException {
        startServer();
    }

    /**
     * Start the server.
     *
     * @return the created {@link WebServer} instance
     * @throws IOException if there are problems reading logging properties
     */
    static WebServer startServer() throws IOException {

        // load logging configuration
        LogManager.getLogManager().readConfiguration(
                Main.class.getResourceAsStream("/logging.properties"));

        // By default this will pick up application.yaml from the classpath
        Config config = Config.create();

        // Get webserver config from the "server" section of application.yaml
        ServerConfiguration serverConfig =
                ServerConfiguration.create(config.get("server"));

        WebServer server = WebServer.create(serverConfig, createRouting(config));

        // Try to start the server. If successful, print some info and arrange to
        // print a message at shutdown. If unsuccessful, print the exception.
        server.start()
                .thenAccept(ws -> {
                    System.out.println(
                            "WEB server is up! http://localhost:" + ws.port() + "/greet");
                    ws.whenShutdown().thenRun(()
                            -> System.out.println("WEB server is DOWN. Good bye!"));
                })
                .exceptionally(t -> {
                    System.err.println("Startup failed: " + t.getMessage());
                    t.printStackTrace(System.err);
                    return null;
                });

        // Server threads are not daemon. No need to block. Just react.

        return server;
    }

    /**
     * Creates new {@link Routing}.
     *
     * @param config configuration of this server
     * @return routing configured with JSON support, a health check, and a service
     */
    private static Routing createRouting(Config config) {

        StaticContentSupport.Builder jsSupport =
                StaticContentSupport.builder("/web/js", ClassLoader.getSystemClassLoader());
        StaticContentSupport.Builder cssSupport =
                StaticContentSupport.builder("/web/css", ClassLoader.getSystemClassLoader());
        StaticContentSupport.Builder fontsSupport =
                StaticContentSupport.builder("/web/fonts", ClassLoader.getSystemClassLoader());
        StaticContentSupport.Builder imagesSupport =
                StaticContentSupport.builder("/web/images", ClassLoader.getSystemClassLoader());
        StaticContentSupport.Builder htmlSupport =
                StaticContentSupport.builder("/web", ClassLoader.getSystemClassLoader()).welcomeFileName("index.html");

        MetricsSupport metrics = MetricsSupport.create();
        GreetService greetService = new GreetService(config);
        HealthSupport health = HealthSupport.builder()
                .addLiveness(HealthChecks.healthChecks())   // Adds a convenient set of checks
                .build();

        return Routing.builder()
                .register(JsonSupport.create())
                .register(health)
                .register(metrics)
                .register("/web/js", jsSupport)
                .register("/web/css", cssSupport)
                .register("/web/fonts", fontsSupport)
                .register("/web/images", imagesSupport)
                .register("/", htmlSupport)
                .register("/greet", greetService)
                .build();
    }

}
@ljnelson
Copy link
Member

ljnelson commented Sep 28, 2019

Hmm; this concerns me:

Could not parse '*/*\r\nAccept-Language: zh-cn\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/201001
Sep 28 08:49:10 tanganyikabeach java[26739]:         at io.helidon.common.http.MediaType.parse(MediaType.java:225)

Specifically, a set of headers is somehow being "seen" as part of the media type.

@ljnelson
Copy link
Member

@piusalfred The first thing to try is to upgrade to version 1.3.1 in case this issue has already been fixed.

@piusalfred
Copy link
Author

@ljnelson Thanks for the reply. After upgrade to 1.3.1, there is an Unexpected error during routing as per stack trace

Sep 29 11:13:52 tanganyikabeach java[10833]: 2019.09.29 11:13:52 SEVERE io.helidon.webserver.RequestRouting Thread[nioEventLoopGroup-3-1,10,main]: Unexpected error occurred during routing!
Sep 29 11:13:52 tanganyikabeach java[10833]: java.lang.NullPointerException
Sep 29 11:13:52 tanganyikabeach java[10833]:         at io.helidon.webserver.RequestRouting.canonicalize(RequestRouting.java:86)
Sep 29 11:13:52 tanganyikabeach java[10833]:         at io.helidon.webserver.RequestRouting.route(RequestRouting.java:71)
Sep 29 11:13:52 tanganyikabeach java[10833]:         at io.helidon.webserver.ForwardingHandler.channelRead0(ForwardingHandler.java:141)
Sep 29 11:13:52 tanganyikabeach java[10833]:         at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
Sep 29 11:13:52 tanganyikabeach java[10833]:         at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
Sep 29 11:13:52 tanganyikabeach java[10833]:         at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
Sep 29 11:13:52 tanganyikabeach java[10833]:         at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
Sep 29 11:13:52 tanganyikabeach java[10833]:         at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:328)
Sep 29 11:13:52 tanganyikabeach java[10833]:         at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:302)
Sep 29 11:13:52 tanganyikabeach java[10833]:         at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
Sep 29 11:13:52 tanganyikabeach java[10833]:         at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
Sep 29 11:13:52 tanganyikabeach java[10833]:         at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
Sep 29 11:13:52 tanganyikabeach java[10833]:         at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1421)
Sep 29 11:13:52 tanganyikabeach java[10833]:         at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
Sep 29 11:13:52 tanganyikabeach java[10833]:         at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
Sep 29 11:13:52 tanganyikabeach java[10833]:         at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930)
Sep 29 11:13:52 tanganyikabeach java[10833]:         at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
Sep 29 11:13:52 tanganyikabeach java[10833]:         at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:697)
Sep 29 11:13:52 tanganyikabeach java[10833]:         at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:632)
Sep 29 11:13:52 tanganyikabeach java[10833]:         at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:549)
Sep 29 11:13:52 tanganyikabeach java[10833]:         at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:511)
Sep 29 11:13:52 tanganyikabeach java[10833]:         at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:918)
Sep 29 11:13:52 tanganyikabeach java[10833]:         at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
Sep 29 11:13:52 tanganyikabeach java[10833]:         at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
Sep 29 11:13:52 tanganyikabeach java[10833]:         at java.base/java.lang.Thread.run(Thread.java:834)

@ljnelson
Copy link
Member

NullPointerExceptions are always bad. I will take a look. I'm not super familiar with this area of the code but it certainly shouldn't be failing in this manner.

@ljnelson ljnelson added the bug Something isn't working label Sep 29, 2019
@ljnelson ljnelson added this to Needs triage in Backlog via automation Sep 29, 2019
@ljnelson ljnelson moved this from Needs triage to High priority in Backlog Sep 29, 2019
@ljnelson ljnelson added the P1 label Sep 29, 2019
@ljnelson ljnelson moved this from High priority to In Progress in Backlog Sep 29, 2019
@ljnelson
Copy link
Member

@piusalfred I've filed a PR (#1072) that will fix this NullPointerException issue. I can't say whether it will move you forward but this sub-issue certainly needed fixing.

@piusalfred
Copy link
Author

@ljnelson Noted. I will be following

Backlog automation moved this from In Progress to Closed Sep 10, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working P1 webserver
Projects
Backlog
  
Closed
Development

No branches or pull requests

2 participants