Uploaded image for project: 'WildFly'
  1. WildFly
  2. WFLY-6336

request-limit should have its attributes as 'required'

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • 11.0.0.Alpha1
    • 10.0.0.Final
    • Web (Undertow)
    • None
    • Hide

      1. start server
      2. /subsystem=undertow/configuration=filter/request-limit=mylimit:add()
      3. /subsystem=undertow/server=default-server/host=default-host/filter-ref=mylimit:add()
      4. perform HTTP request to server and see aforementioned error

      Show
      1. start server 2. /subsystem=undertow/configuration=filter/request-limit=mylimit:add() 3. /subsystem=undertow/server=default-server/host=default-host/filter-ref=mylimit:add() 4. perform HTTP request to server and see aforementioned error

    Description

      When creating the 'request-limit' filter in Undertow, there is not required to provide any of two available attributes. Although when I attach such filter to listener and perform request to server, I get following error:

      ERROR [io.undertow.request] (default I/O-1) UT005071: Undertow request failed HttpServerExchange{ GET /long-running-servlet/HeavyProcessing request {Accept=[text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8], Accept-Language=[cs,en-US;q=0.8,en;q=0.6], Cache-Control=[no-cache], Accept-Encoding=[gzip, deflate, sdch], DNT=[1], Pragma=[no-cache], User-Agent=[Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36], Connection=[keep-alive], Upgrade-Insecure-Requests=[1], Host=[localhost:8080]} response {}}: java.lang.RuntimeException: WFLYUT0059: Could not construct handler for class: class io.undertow.server.handlers.RequestLimitingHandler. with parameters {
          "max-concurrent-requests" => undefined,
          "queue-size" => undefined
      }
      	at org.wildfly.extension.undertow.filters.Filter.createHandler(Filter.java:111)
      	at org.wildfly.extension.undertow.filters.Filter.createHttpHandler(Filter.java:68)
      	at org.wildfly.extension.undertow.filters.RequestLimitHandler.createHttpHandler(RequestLimitHandler.java:37)
      	at org.wildfly.extension.undertow.filters.FilterService.createHttpHandler(FilterService.java:57)
      	at org.wildfly.extension.undertow.filters.FilterRef.createHttpHandler(FilterRef.java:69)
      	at org.wildfly.extension.undertow.LocationService.configureHandlerChain(LocationService.java:96)
      	at org.wildfly.extension.undertow.Host.configureRootHandler(Host.java:117)
      	at org.wildfly.extension.undertow.Host.getOrCreateRootHandler(Host.java:171)
      	at org.wildfly.extension.undertow.Host$HostRootHandler.handleRequest(Host.java:285)
      	at io.undertow.server.handlers.NameVirtualHostHandler.handleRequest(NameVirtualHostHandler.java:54)
      	at io.undertow.server.handlers.error.SimpleErrorPageHandler.handleRequest(SimpleErrorPageHandler.java:76)
      	at io.undertow.server.handlers.CanonicalPathHandler.handleRequest(CanonicalPathHandler.java:49)
      	at io.undertow.server.handlers.ChannelUpgradeHandler.handleRequest(ChannelUpgradeHandler.java:158)
      	at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)
      	at io.undertow.server.protocol.http.HttpReadListener.handleEventWithNoRunningRequest(HttpReadListener.java:233)
      	at io.undertow.server.protocol.http.HttpReadListener.handleEvent(HttpReadListener.java:131)
      	at io.undertow.server.protocol.http.HttpOpenListener.handleEvent(HttpOpenListener.java:145)
      	at io.undertow.server.protocol.http.HttpOpenListener.handleEvent(HttpOpenListener.java:92)
      	at io.undertow.server.protocol.http.HttpOpenListener.handleEvent(HttpOpenListener.java:51)
      	at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
      	at org.xnio.ChannelListeners$10.handleEvent(ChannelListeners.java:291)
      	at org.xnio.ChannelListeners$10.handleEvent(ChannelListeners.java:286)
      	at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
      	at org.xnio.nio.QueuedNioTcpServer$1.run(QueuedNioTcpServer.java:121)
      	at org.xnio.nio.WorkerThread.safeRun(WorkerThread.java:580)
      	at org.xnio.nio.WorkerThread.run(WorkerThread.java:464)
      Caused by: java.lang.IllegalArgumentException
      	at org.jboss.dmr.ModelValue.asInt(ModelValue.java:58)
      	at org.jboss.dmr.ModelNode.asInt(ModelNode.java:240)
      	at org.wildfly.extension.undertow.filters.Filter.createHandler(Filter.java:94)
      	... 25 more
      

      I think we should make those attributes as required when creating such filter as they are required for it's construction anyway.

      Expected:
      Make both attributes of request-limit filter as required when creating such filter and write operation error in case they are not provided.

      NOTE: also it seems that now when I set attribute queue-size to 0 then this queue is unlimited. Maybe it would be more suitable to set behaviour like this:

      • undefined -> unlimited queue
      • 0 -> no queue
      • 1..N -> queue size
        well this would be a change of behaviour so maybe it's too late to do such change already...

      Attachments

        Issue Links

          Activity

            People

              tomazcerar Tomaž Cerar (Inactive)
              tomazcerar Tomaž Cerar (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: