You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@nifi.apache.org by "Andrei Koiro (Jira)" <ji...@apache.org> on 2025/01/16 23:49:00 UTC

[jira] [Created] (NIFI-14170) ListenWebSocketProcessor doesn't work: "org.eclipse.jetty.ee10.servlet.ServletApiRequest.getRequest()" is null

Andrei Koiro created NIFI-14170:
-----------------------------------

             Summary: ListenWebSocketProcessor doesn't work: "org.eclipse.jetty.ee10.servlet.ServletApiRequest.getRequest()" is null
                 Key: NIFI-14170
                 URL: https://issues.apache.org/jira/browse/NIFI-14170
             Project: Apache NiFi
          Issue Type: Bug
          Components: Extensions
    Affects Versions: 2.1.0
            Reporter: Andrei Koiro
         Attachments: NiFi_Flow.json, Screenshot 2025-01-17 at 00.35.06.png

 
{code:java}
2025-01-16 23:58:02,114 WARN [qtp297136886-98] o.a.n.w.jetty.RoutingWebSocketListener Unhandled Error: Endpoint org.apache.nifi.websocket.jetty.RoutingWebSocketListener : org.eclipse.jetty.websocket.api.exceptions.CloseException: org.eclipse.jetty.websocket.core.exception.WebSocketException: RoutingWebSocketListener OPEN method error: Cannot invoke "org.eclipse.jetty.server.Request.isSecure()" because the return value of "org.eclipse.jetty.ee10.servlet.ServletApiRequest.getRequest()" is null {code}

ListenWebSocketProcessor doesn't work
It happens because our code tries to call  org.eclipse.jetty.ee10.servlet.ServletApiRequest.getRequest() after the current ServletChannel already was "recycle"d 
  
org.apache.nifi.processors.websocket.ListenWebSocket 
{code:java}
    protected String getTransitUri(final WebSocketSessionInfo sessionInfo) {
        final InetSocketAddress localAddress = sessionInfo.getLocalAddress();
        return (sessionInfo.isSecure() ? "wss:" : "ws:")
                + localAddress.getHostName() + ":" + localAddress.getPort() + endpointId;
    }
{code}

org.eclipse.jetty.ee10.servlet.ServletChannel
{code:java}
    void recycle(Throwable x)
    {
        // _httpInput must be recycled before _state.
        _httpInput.recycle();
        _httpOutput.recycle();
        _state.recycle();
        _servletContextRequest = null;
        _request = null;
        _response = null;
        _callback = null;
    }
{code}

org.eclipse.jetty.ee10.servlet.ServletContextHandler:1170
{code:java}
Request.addCompletionListener(servletContextRequest, servletChannel::recycle);
{code}

 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)