[ 
https://issues.apache.org/jira/browse/NIFI-3561?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Koji Kawamura reassigned NIFI-3561:
-----------------------------------

    Assignee: Koji Kawamura

> JettyWebSocketServer uses original requested port, instead of the forwarded 
> port
> --------------------------------------------------------------------------------
>
>                 Key: NIFI-3561
>                 URL: https://issues.apache.org/jira/browse/NIFI-3561
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Extensions
>    Affects Versions: 1.1.0
>            Reporter: Edgar Orendain
>            Assignee: Koji Kawamura
>              Labels: jetty, websocket
>
> Situation:
> We have port forwarding set up in such a way where port 25000 is forwarded to 
> port 15000.  ListenWebSocket processor listens on this 15000 port.
> Requests that hit the JettyWebSocketServer are considered as attempting to 
> connect to the original port (25000) rather than the forwarded port of 15000. 
>  The same was reproduced with different ports and on different forwarding 
> layers (i.e. NAT and iptables).  I've included a stack trace below.
> From Koji:
> -I think it's more of a Jetty side issue, after it upgrade HTTP connection to 
> TCP, it still uses the original requested port (which is a port forwarding 
> request to the real port) to find a request handler assigned to that port.-
> (updated) Excuse me, but I was wrong about this diagnose. It's a problem in 
> NiFi JettyWebSocketServer I wrote. The ControllerService lookups server 
> instance by a port number that the CS listens to. When a request made through 
> port forwarding, a port passed by ServletUpgradeRequest is different than CS 
> is bounded to. Then it fails to lookup a server instance. I will check if 
> original port can be retrieved from a request, if not, I will add a 
> configuration property to the CS to specify forwarding port numbers.
> java.lang.RuntimeException: No controller service is bound with port: 25000
> at 
> org.apache.nifi.websocket.jetty.JettyWebSocketServer$JettyWebSocketServlet.createWebSocket(JettyWebSocketServer.java:134)
>  ~[nifi-websocket-services-jetty-1.1.0.2.1.2.0-10.jar:1.1.0.2.1.2.0-10]
> at 
> org.eclipse.jetty.websocket.server.WebSocketServerFactory.acceptWebSocket(WebSocketServerFactory.java:187)
>  ~[websocket-server-9.3.13.v20161014.jar:9.3.13.v20161014]
> at 
> org.eclipse.jetty.websocket.server.WebSocketServerFactory.acceptWebSocket(WebSocketServerFactory.java:172)
>  ~[websocket-server-9.3.13.v20161014.jar:9.3.13.v20161014]
> at 
> org.eclipse.jetty.websocket.servlet.WebSocketServlet.service(WebSocketServlet.java:155)
>  ~[websocket-servlet-9.3.13.v20161014.jar:9.3.13.v20161014]
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 
> ~[javax.servlet-api-3.1.0.jar:3.1.0]
> at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:845) 
> ~[jetty-servlet-9.3.9.v20160517.jar:9.3.9.v20160517]
> at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:583) 
> [jetty-servlet-9.3.9.v20160517.jar:9.3.9.v20160517]
> at 
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1174)
>  [jetty-server-9.3.9.v20160517.jar:9.3.9.v20160517]
> at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511) 
> [jetty-servlet-9.3.9.v20160517.jar:9.3.9.v20160517]
> at 
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1106)
>  [jetty-server-9.3.9.v20160517.jar:9.3.9.v20160517]
> at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 
> [jetty-server-9.3.9.v20160517.jar:9.3.9.v20160517]
> at 
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)
>  [jetty-server-9.3.9.v20160517.jar:9.3.9.v20160517]
> at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
>  [jetty-server-9.3.9.v20160517.jar:9.3.9.v20160517]
> at org.eclipse.jetty.server.Server.handle(Server.java:524) 
> [jetty-server-9.3.9.v20160517.jar:9.3.9.v20160517]
> at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:319) 
> [jetty-server-9.3.9.v20160517.jar:9.3.9.v20160517]
> at 
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:253) 
> [jetty-server-9.3.9.v20160517.jar:9.3.9.v20160517]
> at 
> org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273)
>  [jetty-io-9.3.9.v20160517.jar:9.3.9.v20160517]
> at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) 
> [jetty-io-9.3.9.v20160517.jar:9.3.9.v20160517]
> at 
> org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
>  [jetty-io-9.3.9.v20160517.jar:9.3.9.v20160517]
> at 
> org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
>  [jetty-util-9.3.9.v20160517.jar:9.3.9.v20160517]
> at 
> org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
>  [jetty-util-9.3.9.v20160517.jar:9.3.9.v20160517]
> at 
> org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
>  [jetty-util-9.3.9.v20160517.jar:9.3.9.v20160517]
> at 
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
>  [jetty-util-9.3.9.v20160517.jar:9.3.9.v20160517]
> at 
> org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
>  [jetty-util-9.3.9.v20160517.jar:9.3.9.v20160517]
> at java.lang.Thread.run(Thread.java:745) [na:1.8.0_111]



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to